Xcode源码自动格式化

作为一名C#开发人员,我已经变得高度依赖于Visual Studio 2008中的自动格式化。具体来说,我将使用CTRL + KD键盘快捷方式在我的草率执行之后强制重新生成事物。

我现在正在学习Objective-C,并且缺lessXcode中的某些function,但是可能没有一个像格式化快捷方式一样痛苦。 我的谷歌search没有内置任何东西,但似乎有一些黑客。 我是否遗漏了一些东西,或者这个function在Xcode中本身不存在?

不幸的是,Xcode没有像VS或者Eclipse的Jalopy那样广泛的东西。 有一些不同的function,比如Structure > Re-Indent ,以及将代码粘贴到源文件时使用的自动格式。 不过,我完全和你在一起。 肯定应该有一些内容来帮助格式化问题。

这是Ctrl +

或者对于低科技,剪切然后粘贴。 它会重新格式化粘贴。

我想推荐两个值得考虑的选项。 两者都颇为新颖和发展。

ClangFormat-Xcode (免费) – 在每个cmd + s文件被重新格式化为特定的风格和保存,易于部署在团队

一个Xcode插件,用@travisjeffery使用Clang的格式工具来格式化您的代码。

使用clang格式,您可以使用Clang将代码格式化为LLVM,Google,Chromium,Mozilla,WebKit或您自己的configuration。

Objective-Clean (已付费,尚未尝试) – 应用程序如果违反了预定义的样式规则,则会引发构build错误 – 在团队中可能很难使用,所以我没有尝试。

使用非常简单的设置,您可以让Xcode使用我们的应用程序来执行您的规则。 如果您曾经违反了您的规则,Xcode将会抛出一个构build错误,并将您带到违规行。

在xcode中,你可以使用这个快捷方式来格式化(重新缩进)你的源代码

  • Command + Aselect所有的源代码

  • 按Ctrl + I重新缩进

希望这可以帮助。

我的个人collectionsPrettyC需要uncrustify: http ://uncrustify.sourceforge.net/。 它有几十个选项,但是我也build议你下载UniversalIndentGUI_macx,(也在sourceforge上)一个有人写的GUI来帮助设置你喜欢它们的方式。

然后,您可以添加此自定义用户脚本来取消选定文本:

 #! /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}%%%" 

您可以使用Command + Aselect所有内容,然后使用Ctrl + I格式化所选内容。

Cmd A + Ctrl I

命令 A ,然后右键单击 。 转到结构 – >重新缩进

考虑购买一个AppCode的许可证, 这是一个智能的Objective-C IDE,可以帮助iOS / OS X开发者。 AppCode与Xcode完全兼容,但增加了强大的function ,超越了Xcode。

AppCode JetBrains的Intellij IDEA IDE的Objective-C变种。 他们也是Visual Studiostream行的ReSharper扩展的作者,从这里主要目的似乎是拼命尝试给微软产品带来一点IDEA体验。

AppCode使用自己的代码分析器,它提供了接近完美的重构和代码导航支持。 有能力重新缩进和完全重新格式化代码(虽然我仍然保持缺less一些格式设置在困难的情况下,但大多数情况下效果很好)。

当然你可以试试试用版。

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

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

不要忘记之前安装uncrustify util。 自制,例如

 brew install uncrustify 

PS您可以在“编辑>格式代码> BBUncrustifyPlugin首选项>保存格式后保存格式”function

希望这会对你有用;-)

我也觉得Xcode应该有这个function。 所以我做了一个扩展: Swimat

通过brew cask install swimat简单安装 预习

您可以试试看,请参阅https://github.com/Jintin/Swimat获取更多信息。;

我build议使用ClangFormat。 为了安装,请按照下列步骤操作:

  1. 为XCode安装Alcatraz软件包pipe理器支持Xcode 5+和OS X 10.9+
  2. 安装后重新启动XCode。
  3. 打开XCode – >窗口菜单 – >程序包pipe理器
  4. search(find)ClangFormat并安装它。 安装后再次重新启动XCode。
  5. 现在在XCode菜单中,您可以使用Edit – > Clang Format子菜单进行格式化。

您可以select不同types的格式。 另外通过启用保存格式,您可以获得自动格式化function。

在这里输入图像说明

如果你的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,我想你应该阅读这个博客: 代码格式在Xcode 4 ,

就这样,用了“苹果服务”,但不够好,导致经验太慢,有没有人有同样的事情?

为什么苹果放下“用户脚本”…. xD

首先,检查XCode首选项“缩进”部分。 你可以自定义一些东西…

更细粒度的控制,请参阅苹果的XCode用户默认文档。 (可能需要开发者login才能查看)。 例如,我可以通过在terminal中input以下内容来禁用“缩进粘贴”:

 defaults write com.apple.XCODE PBXIndentOnPaste No 

读回您的设置:

 defaults read com.apple.XCODE PBXIndentOnPaste 

这只适用于非空格的语言,但我的解决scheme是删除除空格以外的所有空格,然后在通常描述EOL的字符后添加换行符(例如用';'replace';'),然后执行无处不在^ +我的解决scheme。

我使用Python。

示例代码,只需replace文件名:

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

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

CTRL + i

而已。

(没有命令 +

我们可以使用Xcode格式器,它使用uncrustify来轻松地格式化您的源代码,就像您的团队想要成为!

安装推荐的方法是克隆GitHub项目或从https://github.com/octo-online/Xcode-formatter下载它,并在您的Xcode项目中添加CodeFormatter目录得到:Xcode基于快捷方式的代码格式化:一个快捷方式在当前工作空间中修改格式自动代码格式化:在应用程序构build所有源时,向项目添加构build阶段以格式化当前源格式:使用一个命令行格式化所有代码由项目共享格式化规则:编辑并使用相同的configuration文件与您的项目开发团队1)如何为您的项目设置代码格式化程序安装uncrustify最简单的方法是使用brew:$ brew install uncrustify

安装brew:$ ruby​​ -e“$(curl -fsSkl raw.github.com/mxcl/homebrew/go)”

检查uncrustify是否位于/ usr / local / bin $中,该文件解密

如果您的uncrustify版本低于0.60,则可能必须手动安装,因为最近添加了现代的Objective-C语法。 在.xcodeproj文件旁边添加CodeFormatter目录

检查您的Xcode应用程序是否被命名为“Xcode”(默认名称)您可以在Applications /目录(或您的自定义Xcode安装目录)中看到该名称。 如果在Mac上有多个Xcode实例,请小心:确保项目的实际名称是“Xcode”! (为什么这个?这个名字是用来查找当前打开的Xcode文件的,参见CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript)。 安装automator服务Uncrustify_opened_Xcode_sources.workflow复制这个文件到你的〜/ Library / Services /文件夹(如果需要的话创build这个文件夹)。注意:通过双击.workflow文件,你将安装它,但文件将被删除! 请务必将其副本保留给其他用户。

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

sh CodeFormatter / scripts / formatOpendSources.sh

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

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

$ sh CodeFormatter / scripts / formatOpendSources.sh

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

$ sh CodeFormatter / scripts / formatAllSources.sh PATH

PATH必须由你的源代码path取代。

例如; 如果项目名称是TestApp,那么命令将会是

$ sh CodeFormatter / scripts / formatAllSources.sh TestApp

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

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

编辑CodeFormatter / uncrustify_objective_c.cfg用TextEdit打开

您可以看到并更改此path的任何快捷方式:Xcode – >首选项 – >键绑定。

那么我正在寻找一个简单的方法。 并在媒体上find。

首先复制json文本并在jsonlint或类似的东西上进行validation。 然后从jsonlint复制,json已经格式化了。 并将代码粘贴到Xcode上,保留格式,快捷键shift + option + command + v