Xcode 源代码自动格式化

作为一名 C # 开发人员,我已经变得非常依赖 VisualStudio2008中的自动格式化。具体来说,我将使用 CTRL + KD的快捷键,在我粗心大意的实现之后,强迫事情回到原来的状态。

我现在正在尝试学习 Objective-C,在 Xcode 我缺少了一些特性,但可能没有一个特性比格式化快捷方式更痛苦。我的谷歌搜索没有得到任何内置的东西,尽管似乎有一些黑客攻击。是我遗漏了什么,还是这个特征在 Xcode 本来就不存在?

186194 次浏览

不幸的是,Xcode 没有像 VS 或 Jalopy for Eclipse 那样广泛的应用。这里有一些不同的特性,比如 Structure > Re-Indent,以及将代码粘贴到源文件时使用的自动格式化。不过,我完全同意你的看法; 这里肯定有一些 应该的东西可以帮助解决格式问题。

那是 Ctrl +

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

我个人最喜欢的漂亮的想要的是不结壳: http://uncrustify.sourceforge.net/。但是它有几十亿个选项,所以我建议你下载 UniversalIndentGUI _ macx,(也是在 source 上)一个有人写的图形用户界面,帮助你设置你喜欢的选项。

然后,您可以添加这个自定义用户脚本以取消所选文本的结构:

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

您可以使用 命令 + A来选择所有内容,然后使用 Ctrl + 来格式化选定的内容。

如果你的 Xcode 版本3.x,你应该在 去壳中使用“用户脚本”,这里有一个例子:

#!/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 中,可以使用此快捷方式重新缩进源代码

转到存在缩进问题的文件,然后按照下面的步骤操作:

  • Cmd + A选择所有源代码

  • Ctrl + 重新缩进

希望这个能帮上忙。

首先,检查 XCode 首选项“缩进”部分。

要获得更细粒度的控制,请参考 apple 的 XCode 用户默认值文档。(可能需要开发人员登录才能查看)。例如,我可以通过在终端输入以下内容来禁用“粘贴缩进”:

defaults write com.apple.XCODE PBXIndentOnPaste No

读一下你的设定:

defaults read com.apple.XCODE PBXIndentOnPaste

Cmd A + Ctrl < kbd > I

或者是 CMD A然后是 右击转到 结构-> 重新缩进

你也可以看看 https://github.com/octo-online/Xcode-formatter,它是一个基于 uncrutify 的格式化程序,集成到了 Xcode。非常有效。

考虑给自己买一个 应用程式码许可证,这是一个帮助 iOS/OS X 开发人员的智能 Objective-C IDE。AppCode 与 Xcode 完全兼容,但在增加 强大的特征方面超越了 Xcode。

AppCode JetBrains智慧的想法 IDE 的 Objective-C 变体。他们还是流行的 Visual Studio 锐利者扩展的作者,这个扩展的主要目的似乎是为了给微软的产品带来一点 IDEA 体验。

AppCode 使用自己的代码分析器,它提供了近乎完美的重构和代码导航支持。还有一种重新缩进和完全重新格式化代码的能力(尽管在困难的情况下我仍然缺少一些格式设置,但大多数情况下它工作得很好)。

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

这只适用于没有空格描述的语言,但我的解决方案是删除除空格以外的所有空格,然后在通常描述 EOL 的字符后面添加一个换行符(例如,替换’;’与’; n’) ,然后执行无处不在的 ^ + i解决方案。

我用巨蟒。

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

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

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

我想推荐两个值得考虑的选择,它们都是相当新颖和不断发展的。

ClangFormat-Xcode (free)-对于每个 cmd + s 文件,都会重新格式化为特定的样式并保存,易于在团队内部部署

使用 Clang 的格式化工具格式化代码的 Xcode 插件 @ Travis Jeffery.

使用 Clang-format,您可以使用 Clang 将代码格式化为如下样式 作为 LLVM,谷歌,Chromium,Mozilla,WebKit,或您自己的配置。

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

通过非常简单的设置,您可以让 Xcode 使用我们的 App 来执行 你的规则。如果你被抓到违反你的规则之一,Xcode 将抛出一个构建错误,并将您带到违规行。

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

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

别忘了安装 uncrutify util,比如自制的

brew install uncrustify

附言。你可以在“编辑 > 格式代码 > BBUncrutifyPlugin 首选项 > 保存格式”打开“保存格式后”功能

希望这对你有用; -)

我还觉得 xcode 应该有这个函数。 所以我做了一个扩展来完成: < a href = “ https://github.com/Jintin/Swimat”rel = “ norefrer”> Swimat

通过 brew cask install swimat进行简单安装 preview

您可以尝试一下,有关更多信息,请参见 https://github.com/Jintin/Swimat

CTRL + < kbd > i

就是这样。

(不包括 命令 + )

我建议使用 ClangFormat。要安装,请按照以下步骤:

  1. 为 XCode 安装恶魔岛软件包管理器 支持 Xcode 5 + & OS X 10.9 +
  2. 安装后重新启动 XCode。
  3. 打开 XCode-> Window Menu-> Package Manager
  4. 搜索(查找) ClangFormat 并安装它。安装后重新启动 XCode。
  5. 现在在 XCode 菜单中,您可以使用 Edit-> Clang Format 子菜单进行格式化。

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

enter image description here

我们可以使用 Xcode Formatter,它使用 uncrutify 轻松地格式化您的源代码,正如您的团队所希望的那样!.

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

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

检查 uncrutify 是否位于/usr/local/bin 中 $不结壳

如果 uncrutify 版本低于0.60,那么可能需要手动安装,因为最近添加了现代 Objective-C 语法。 在.xcodeproj 文件旁边添加 CodeFormatter 目录

检查 Xcode 应用程序是否命名为“ Xcode”(默认名称) 您可以在 Applications/目录(或自定义 Xcode 安装目录)中看到此名称。如果您的 Mac 上有多个 Xcode 实例,请小心: 确保项目中的一个实际上命名为“ Xcode”! (为什么会这样? 这个名字用于查找当前打开的 Xcode 文件。参见 CodeFormatter/Uncrutify _ open _ Xcode _ source. workappleScript)。 安装自动化服务 Uncrutify _ open _ Xcode _ source. flow 将此文件复制到 ~/Library/Services/文件夹(如果需要,创建此文件夹)。注意: 通过双击。工作流文件,您将安装它,但该文件将被删除!一定要给其他用户留下一份副本。

生成项目时如何格式化打开的文件 添加一个构建阶段“ run script”,其中包含以下代码行:

Sh 代码格式化/脚本/ formatopendsources.sh

如何在命令行格式化文件

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

$sh codeFormatter/script/ formatopendsources.sh

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

$sh codeFormatter/script/ formatallsources.sh PATH

PATH 必须由源路径替换。

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

$sh codeFormatter/script/ formatallsources.sh TestApp

它将查找项目中的所有文件,并将格式化在 uncrutify _ Objective _ c. cfg 文件中配置的所有文件。

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

用 TextEdit 打开 CodeFormatter/uncrutify _ Objective _ c. cfg

我一直在寻找一个简单的方法,在 中等上找到答案。

首先复制 json 文本并在 Jsonlint或类似的程序上验证它。然后从 jsonlint 复制,已经格式化了 json。并将代码粘贴到 Xcode 上,保留格式,快捷方式为 换班 + 选择 + 指挥官 + 翻译

Swift-https://github.com/nicklockwood/SwiftFormat

它提供了 Xcode 扩展和 CLI 选项。