作为一个C#开发人员,我已经在Visual Studio 2008中变得高度依赖于自动格式化具体来说,我会用CTRL+ K,D键盘快捷键力的东西放回形状我的草率实施后。
我现在正在尝试学习Objective-C,并且缺少Xcode的某些功能,但可能没有一个比格式化快捷键那么痛苦。我的Google搜索没有产生任何内置结果,尽管似乎有些黑客。我是否缺少某些东西,或者Xcode本身不存在此功能?
作为一个C#开发人员,我已经在Visual Studio 2008中变得高度依赖于自动格式化具体来说,我会用CTRL+ K,D键盘快捷键力的东西放回形状我的草率实施后。
我现在正在尝试学习Objective-C,并且缺少Xcode的某些功能,但可能没有一个比格式化快捷键那么痛苦。我的Google搜索没有产生任何内置结果,尽管似乎有些黑客。我是否缺少某些东西,或者Xcode本身不存在此功能?
Answers:
不幸的是,Xcode的功能几乎不及VS或Jalopy for Eclipse。有一些不同的功能,例如将Structure > Re-Indent
代码粘贴到源文件中时使用的自动格式设置。我完全和你在一起。这里绝对应该什么东西在那里帮助格式问题。
那是Ctrl+ i。
或对于高科技含量较低的产品,先切割然后粘贴。它将重新粘贴格式。
,
,=
或者其他经营者。它的目的只是意图。没有其他的。Mac确实需要在这里向Microsoft学习。
我想推荐两个值得考虑的选择。两者都是相当新的并且不断发展。
ClangFormat-Xcode(免费)-每个cmd + s文件上的格式都重新格式化为特定样式并保存,易于在团队内部署
一个Xcode插件,使用@travisjeffery使用Clang的格式化工具来格式化代码。
使用clang-format,您可以使用Clang将代码格式化为LLVM,Google,Chromium,Mozilla,WebKit或您自己的配置等样式。
Objective-Clean(付费,尚未尝试)-如果违反了预定义的样式规则,则应用会引发构建错误-在团队内部可能很难使用,因此我没有尝试。
只需极少的设置,您就可以让Xcode使用我们的应用来执行您的规则。如果您被发现违反了其中一项规则,则Xcode会抛出构建错误并将您带到违规行。
我个人最喜欢的PrettyC wantabe尚未解密:http ://uncrustify.sourceforge.net/ 。它有数十亿个选项,因此我也建议您下载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+ A选择所有内容,然后使用Ctrl+ I格式化所选内容。
我也觉得xcode应该有这个功能。所以我做了一个扩展:Swimat
安装简单 brew cask install swimat
您可以尝试一下,有关更多信息,请参见https://github.com/Jintin/Swimat。
考虑为自己购买AppCode的许可证,AppCode是可帮助iOS / OS X开发人员的智能Objective-C IDE。AppCode与Xcode完全兼容,但在添加强大功能方面超越了Xcode 。
AppCode JetBrains的Intellij IDEA IDE 的Objective-C变体。他们还是Visual Studio 受欢迎的ReSharper扩展的作者,从这里开始的主要目的似乎是为了将IDEA体验带给Microsoft产品的绝望尝试。
AppCode使用其自己的代码分析器,该分析器可提供近乎完美的重构和代码导航支持。还可以重新缩进代码并完全重新格式化代码(尽管在困难的情况下我仍然会丢失一些格式设置,但大多数情况下效果很好)。
您当然可以尝试试用版。
您还可以查看https://github.com/octo-online/Xcode-formatter,它是基于Uncrustify并已集成到Xcode中的格式化程序。奇迹般有效。
您可以尝试使用XCode插件https://github.com/benoitsan/BBUncrustifyPlugin-Xcode
只需克隆github仓库,在XCode中打开插件项目并运行它。它会自动安装。在使用格式化程序插件之前,请重新启动Xode。
不要忘记之前安装uncrustify util。自制,例如
brew install uncrustify
PS可以在“编辑”>“格式代码”>“ BBUncrustifyPlugin首选项”>“保存时格式化”中启用“保存后格式化”功能
希望这对您有用;-)
斯威夫特-https: //github.com/nicklockwood/SwiftFormat
它提供了Xcode扩展以及CLI选项。
CTRL + i
而已。
(否COMMAND+ i)
我建议使用ClangFormat。为了安装,请按照下列步骤操作:
您可以选择不同类型的格式。同样,通过启用“保存时格式化”,您可以获得自动格式化功能。
如果您的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中的代码格式,
这样,使用了“ Apple Services”,但是它不够好,导致体验太慢,有人有同样的想法吗?
苹果为什么要删除“用户脚本” .... xD
首先,检查XCode首选项“缩进”部分。您可以在那里自定义很多东西...
有关更细粒度的控制,请参阅Apple 的XCode User Defaults文档。(可能需要开发者登录才能查看)。例如,我可以通过在终端中输入以下内容来禁用“粘贴时缩进”:
defaults write com.apple.XCODE PBXIndentOnPaste No
读回您的设置:
defaults read com.apple.XCODE PBXIndentOnPaste
这仅适用于未划定空格的语言,但我的解决方案是删除空格以外的所有空格,然后在通常划定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'))"
它不是完美的(例如:for循环),但是我喜欢它。
我们可以使用Xcode Formatter,它使用uncrustify轻松地格式化您的源代码,就像您的团队真正想要的那样!
安装推荐的方法是克隆GitHub项目或从https://github.com/octo-online/Xcode-formatter下载它并在Xcode项目中添加CodeFormatter目录,以获取:基于Xcode快捷方式的代码格式:在当前工作空间中格式化修改后的源代码自动代码格式化:当应用程序构建所有源代码时,在项目中添加一个构建阶段以格式化当前源代码格式化:使用一个命令行格式化所有代码您的项目共享的格式化规则:编辑并使用相同的配置项目开发团队的文件1)如何为您的项目设置代码格式化程序安装uncrustify最简单的方法是使用brew:$ brew install uncrustify
要安装brew:$ ruby –e“ $(curl –fsSkl raw.github.com/mxcl/homebrew/go)”
检查uncrustify是否位于/ usr / local / bin $中
如果您的Unrustify版本低于0.60,则可能必须手动安装它,因为最近已添加了现代Objective-C语法。在您的.xcodeproj文件旁边添加CodeFormatter目录
检查您的Xcode应用程序是否命名为“ Xcode”(默认名称)。您可以在Applications /目录(或自定义Xcode安装目录)中看到此名称。如果您的Mac上有多个Xcode实例,请小心:确保项目的实例实际上被命名为“ Xcode”!(为什么?此名称用于查找当前打开的Xcode文件。请参见CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript)。安装自动服务Uncrustify_opened_Xcode_sources.workflow将此文件复制到〜/ Library / Services /文件夹(如果需要,请创建此文件夹)。请小心:双击.workflow文件,将其安装,但该文件将被删除!确保将其副本留给其他用户。
在构建项目时如何格式化打开的文件添加包含以下行的构建阶段“运行脚本”:
sh CodeFormatter / scripts / formatOpendSources.sh
如何在命令行中格式化文件
要格式化当前打开的文件,请使用formatOpenedSources.sh:
$ sh CodeFormatter / scripts / formatOpendSources.sh
要格式化所有文件,请使用formatAllSources.sh:
$ sh CodeFormatter / scripts / formatAllSources.sh PATH
PATH必须替换为您的源路径。
例如; 如果项目名称为TestApp,则命令为
$ sh CodeFormatter / scripts / formatAllSources.sh TestApp
它将查找项目中的所有文件,并按照uncrustify_objective_c.cfg文件中的配置格式化所有文件。
如何更改格式化程序的规则
编辑CodeFormatter / uncrustify_objective_c.cfg,使用TextEdit打开