Xcode源码自动格式化
作为一名C#开发人员,我已经变得高度依赖于Visual Studio 2008中的自动格式化。具体来说,我将使用CTRL + K , D键盘快捷方式在我的草率执行之后强制重新生成事物。
我现在正在学习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。 为了安装,请按照下列步骤操作:
- 为XCode安装Alcatraz软件包pipe理器支持Xcode 5+和OS X 10.9+
- 安装后重新启动XCode。
- 打开XCode – >窗口菜单 – >程序包pipe理器
- search(find)ClangFormat并安装它。 安装后再次重新启动XCode。
- 现在在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