代码之家  ›  专栏  ›  技术社区  ›  jslatts

Xcode源自动格式化

  •  169
  • jslatts  · 技术社区  · 15 年前

    作为一名C开发人员,我已经高度依赖于Visual Studio 2008中的自动格式设置。具体来说,我将使用 CTRL + K ,请 D 在我草率的实现之后,使用键盘快捷键强制恢复形状。

    我现在正在尝试学习Objective-C,并且在Xcode中缺少某些特性,但可能没有一个特性比格式化快捷方式更痛苦。我的谷歌搜索没有任何内置的东西,尽管看起来有一些黑客。我是否遗漏了一些东西,或者这个特性在Xcode中不存在?

    20 回复  |  直到 6 年前
        1
  •  123
  •   Siddharth    7 年前

    不幸的是,对于Eclipse,Xcode并没有像vs或jalopy那样广泛的功能。有一些不同的特性,例如 Structure > Re-Indent 以及将代码粘贴到源文件时使用的自动格式设置。不过,我完全同意你的意见;当然 应该 有一些东西可以帮助格式化问题。

        2
  •  410
  •   Rose Perrone    11 年前

    那是 Ctrl键 + .

    或者对于低技术的,先剪切再粘贴。它将在粘贴时重新格式化。

        3
  •  35
  •   matm    10 年前

    我想推荐两个值得考虑的方案。都是新的和不断发展的。

    ClangFormat-Xcode (免费)-在每个cmd+s文件上,都被重新格式化为特定的样式并保存,易于在团队中部署。

    一个xcode插件,通过使用clang的格式工具来格式化代码。 @旅行杰弗里。

    使用clang格式,可以使用clang将代码格式化为 作为llvm、google、chromium、mozilla、webkit或您自己的配置。

    Objective-Clean (付费,但还没有尝试过)-如果违反了预先定义的样式规则,应用程序会引发生成错误-可能在团队中很难使用,所以我没有尝试过。

    通过非常小的设置,您可以让Xcode使用我们的应用程序强制 你的规则。如果你被发现违反了你的规则,xcode 将抛出一个生成错误并将您带到有问题的行。

        4
  •  26
  •   BoltClock    12 年前

    在Xcode中,可以使用此快捷方式格式化(重新缩进)源代码

    • 命令 + 选择所有源代码

    • Ctrl键 + 重新缩进

    希望这有帮助。

        5
  •  18
  •   geowar    15 年前

    我个人的fav prettyc wantabe不生锈: http://uncrustify.sourceforge.net/ . 不过,它有几十亿个选项,所以我建议您下载UniversalIndentGui_Macx(也在SourceForge上),一个用户界面,有人写它来帮助您按照自己喜欢的方式设置选项。

    然后,可以添加此自定义用户脚本以取消对所选文本的信任:

    #! /bin/sh
    #
    # uncrustify!
    echo -n "%%%{PBXSelection}%%%"
    /usr/local/bin/uncrustify -q -c /usr/local/share/uncrustify/geo_uncrustify.cfg -l oc+ <&0
    echo -n "%%%{PBXSelection}%%%"
    
        6
  •  13
  •   BoltClock    12 年前

    你可以使用 命令 + 选择所有内容和下一个 Ctrl键 + 设置所选内容的格式。

        7
  •  9
  •   j0k spurrchalifax    12 年前

    CMD + Ctrl键

    CMD 然后 右击 . 古托 结构->重新缩进

        8
  •  5
  •   Basil Bourque    11 年前

    考虑给自己买个执照 AppCode 这是一个帮助iOS/OS X开发人员的智能客观C IDE。Appcode与Xcode完全兼容,但在添加时超出了Xcode powerful features .

    应用程序代码 Intellij IDEA IDE从 JetBrains . 他们也是流行音乐的作者 ReSharper 扩展到Visual Studio,它的主要目的似乎是为了给微软的产品带来一些创意体验。

    Appcode正在使用自己的代码分析器,它提供近乎完美的重构和代码导航支持。还有一种重新缩进和完全重新格式化代码的能力(尽管在硬情况下,我仍然会丢失一些格式设置,但大多数情况下效果都很好)。

    当然,你可以试试试用版。

        9
  •  5
  •   Jintin    7 年前

    我也觉得xcode应该有这个功能。 所以我做了一个扩展: Swimat

    简单安装方式 brew cask install swimat preview

    你可以试试看 https://github.com/Jintin/Swimat 更多信息。

        10
  •  4
  •   omartin    11 年前

    你也可以看看 https://github.com/octo-online/Xcode-formatter 这是一个基于未生锈和集成到Xcode的格式化程序。很有魅力。

        11
  •  4
  •   romanvbabenko    10 年前

    你可以试试那个xcode插件 https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

    只需克隆Github存储库,在Xcode中打开插件项目并运行它。它将自动安装。在使用格式化程序插件之前重新启动Xode。

    不要忘记安装未生锈的工具。自制,例如

    brew install uncrustify
    

    另外,您可以在编辑>格式代码>bbuncruistyplugin首选项>保存时的格式中启用“保存格式后”功能。

    希望这对你有用;-)

        12
  •  3
  •   csonuryilmaz    8 年前

    我建议使用clangformat。要安装,请执行以下步骤:

    1. 为Xcode安装Alcatraz包管理器 支持Xcode 5+操作系统x 10.9+
    2. 安装后重新启动xcode。
    3. 打开xcode->窗口菜单->包管理器
    4. 搜索(查找)clangformat并安装它。重新安装后,重新启动xcode。
    5. 现在,在xcode菜单中,您可以使用“编辑”->clang格式子菜单进行格式设置。

    您可以选择不同类型的格式。也可以通过启用 保存格式 您可以获得自动格式化功能。

    enter image description here

        13
  •  2
  •   Brian Tompsett - 汤莱恩 Tejas G R    8 年前

    CTRL +

    就是这样。

    (不) 命令 + )

        14
  •  1
  •   poplax    12 年前

    如果您的Xcode版本3.x,您应该使用“用户脚本”来 Uncrustify ,这里是一个例子:

    #!/bin/sh
    
    echo -n "%%%{PBXSelection}%%%"
    $YOURPATH_TO_UNCRUSTIFY/uncrustify -q -c $YOURPATH_TO_UNCRUSTIFY_CONFIG/CodeFormatConfig.cfg -l OC+
    echo -n "%%%{PBXSelection}%%%"
    

    将以上内容添加到您的xcode“用户脚本”。

    如果xcode版本4.x,我想你应该读一下这个博客: Code Formatting in Xcode 4 ,

    这样,就使用了“苹果服务”,但还不够好,导致体验太慢,有没有人有同样的东西?

    为什么苹果放弃“用户脚本”……除息的

        15
  •  1
  •   SteveS    12 年前

    首先,检查xcode首选项“缩进”部分。你可以在那里定制一些东西…

    有关更细粒度的控制,请参阅 XCode User Defaults 来自苹果的文件。(可能需要开发人员登录才能查看)。例如,我可以通过在终端中输入以下内容来禁用“粘贴时缩进”:

    defaults write com.apple.XCODE PBXIndentOnPaste No
    

    要读取设置:

    defaults read com.apple.XCODE PBXIndentOnPaste
    
        16
  •  1
  •   blerbl    11 年前

    这只适用于不带空格的语言,但我的解决方案是删除除空格之外的所有空格,然后在通常描述eol的字符后添加新行(例如,将“;”替换为“;\n”),然后执行无处不在的 ^+i 解决方案。

    我使用Python。

    示例代码,只需替换文件名:

    python -c "import re; open(outfile,'w').write(re.sub('[\t\n\r]','',open(infile).read()).replace(';',';\n').replace('{','{\n').replace('}','}\n'))"
    

    它并不完美(例如:对于循环),但我喜欢它。

        17
  •  1
  •   Ajeet Sharma    8 年前

    我们可以使用Xcode格式化程序,它使用uncrestify轻松地格式化您的源代码,就像您的团队所希望的那样!.

    安装 建议的方法是克隆Github项目或从 https://github.com/octo-online/Xcode-formatter 并在Xcode项目中添加codeformatter目录以获取: 基于Xcode快捷方式的代码格式:在当前工作区中设置已修改源格式的快捷方式 自动代码格式:将生成阶段添加到项目中,以便在应用程序生成时设置当前源的格式 所有源格式:用一个命令行格式化所有代码 您的格式设置规则由项目共享:编辑并与您的项目开发团队使用相同的配置文件 1)如何为项目设置代码格式化程序 安装不生锈 最简单的方法是使用BREW: $BREW安装未生锈

    要安装BREW: $ruby_“e__$(curl_ fsskl raw.github.com/mxcl/homebrew/go)__

    检查未生锈是否位于/usr/local/bin $未生锈

    如果您的未生锈版本低于0.60,则可能需要手动安装它,因为最近添加了现代Objective-C语法。 在.xcodeproj文件旁边添加codeformatter目录

    检查Xcode应用程序是否命名为“Xcode”(默认名称) 您可以在应用程序/目录(或自定义Xcode安装目录)中看到此名称。如果您的Mac上有多个Xcode实例,请小心:确保项目的实例实际上命名为“Xcode”! (为什么会这样?此名称用于查找当前打开的Xcode文件。请参见codeformatter/uncrestify_opened_xcode_sources.workflow applescript)。 安装automator服务uncrestify_opened_xcode_sources.workflow 将此文件复制到您的~/library/services/folder(如果需要,请创建此文件夹)。小心:双击.workflow文件,您将安装它,但文件将被删除!一定要留一份给其他用户。

    如何在生成项目时格式化打开的文件 添加包含以下行的生成阶段“运行脚本”:

    sh代码格式化程序/scripts/formatopendsources.sh

    如何在命令行中格式化文件

    要格式化当前打开的文件,请使用formatOpenedSources.sh:

    $sh代码格式化程序/scripts/formatopendsources.sh

    要格式化所有文件,请使用formatalsources.sh:

    $sh codeformatter/scripts/formatallsources.sh路径

    路径必须替换为源路径。

    例如,如果项目名称为testapp,则命令将为

    $sh codeformatter/scripts/formatallsources.sh测试应用程序

    它将查找项目中的所有文件,并按照uncruify_objective_c.cfg文件中的配置格式化所有文件。

    如何更改格式化程序的规则

    编辑codeformatter/uncrestify_objective_c.cfg用textedit打开

        18
  •  1
  •   jaym    6 年前

    斯威夫特 https://github.com/nicklockwood/SwiftFormat

    它提供xcode扩展和cli选项。

        19
  •  0
  •   erdikanik    7 年前

    您可以查看和更改此路径下的任何快捷方式:xcode->首选项->键绑定。

        20
  •  0
  •   Shad    7 年前

    我在寻找一个简单的方法。并找出 medium .

    首先复制JSON文本并在 jsonlint 或者类似的东西。然后从jsonlint复制,已经格式化了json。并将代码粘贴到Xcode上,保留格式、快捷方式 转移 + 选项 + 命令 + V