Xcode:如何调整自动生成的大括号缩进?

39

Xcode自动生成的代码似乎默认将左括号放在同一行:

@interface Controller : NSObject {

}

我希望左花括号单独在一行,像这样:

@interface Controller : NSObject 
{

}

这适用于由Xcode自动生成的任何方法/类。在Xcode首选项中,我将"Indent solo { by"设置为0:

alt text

我该如何解决这个问题?


7
虽然这可能不是我们的风格,但这个人有权拥有自己的标准。 - Abizern
6个回答

22
对于 Xcode 3.x 版本,您可以使用以下内容:
defaults write com.apple.Xcode XCCodeSenseFormattingOptions '{ "BlockSeparator" = "\n" ; }'
如果您打开终端并输入此命令,将在新行上开始新的代码块。请注意,您需要重新启动 Xcode 才能读取和使用新的默认设置。

对于 Xcode 4.x 到 6.x(当前版本),我建议您使用Snippet Edit来编辑定义 Xcode 自动补全的片段,这是一个非常方便的工具。目前它是免费的,并且运行良好。

1
运作得很顺利..我特别感兴趣的是使自动生成的代码(如for循环等)具有“正确”的括号样式。你是如何了解这些默认设置的呢? - Jesse Pepper
我从搜索“xcode用户默认设置”中找到了这个链接:http://j.mp/xcode_formatting_defaults。点击该链接即可访问。 - Debajit
这似乎不适用于Xcode 4.2,太糟糕了。感谢您提供的信息。 - Oh Danny Boy
确实不行。我尝试了各种不同的XCCodeSenseFormattingOptions设置,但它们都没有任何影响。根据最新的man页面,我相信它应该可以,所以我个人认为这是一个bug。 - Laughing_Jack
1
如需详细说明如何更改Xcode 4.2代码片段库并执行此操作,请参阅Scott Forbes在https://dev59.com/e2435IYBdhLWcg3w9E9Y#5763379上的答案。 - Laughing_Jack

8
新项目和新文件命令实际上并不生成任何代码,它们填充模板。您需要创建自己的模板(可能基于苹果的模板),并进行所需的更改。
在Xcode 3.1中,标准模板位于/Developer/Library/Xcode中。您将把修改后的副本放在~/Library/Application Support/Developer/Shared/Xcode中。请注意这些文件夹的子文件夹。

7
这是我也想看到的,我不喜欢花括号与函数或循环控制在同一行的“新学派”方式。当编辑和移动代码行时,将所有相关内容保持在一行中更容易。花括号应该仅定义范围,它们不是函数定义或程序执行的一部分(例如if,for等)。修改所有模板并不是一个好的解决方案,但无论如何感谢提供信息。

不算是新学派……这来自于在书写代码时为节省空间的旧方式。仿效神秘崇拜规定所有人只需复制他们所见到的内容...... - trilogy

7

阅读此文档:XCCodeSenseFormattingOptions

本文档描述了自动完成将用于括号和参数样式的所有格式选项。以下是我的:

    XCCodeSenseFormattingOptions =     {
    BlockSeparator = "\\n";
    PreMethodDeclSpacing = "";
};

我认为他在谈论新项目和新文件命令,而不是自动完成。(至少,我无法想象使用自动完成将所有类放在一个文件中创建每个类。) - Peter Hosey
新网址:http://developer.apple.com/mac/library/documentation/DeveloperTools/Reference/XcodeUserDefaultRef/100-Xcode_User_Defaults/UserDefaultRef.html - Warren P
@Peter,我指的是自动完成和新文件/项目。 - Debajit
@WarrenP 的链接也失效了。 - raistlin

3

如果您希望在所有情况下都使用您喜欢的样式,您需要结合Laughing_Jack和Peter Hosey的答案。除了Peter Hosey所说的内容外,您还可以了解到Cocoa Touch文件模板位于以下位置。您也可以将该目录复制到自定义模板中:

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/File Templates/Cocoa Touch Classes/

Xcode用户默认设置为您手动编写代码时提供样式,文件模板在自动生成新类等时提供样式。

0

我相信在最新版本的Xcode(7.x)中,“defaults write com.apple.Xcode”不起作用。

解决方法是编辑默认的代码片段。

然而,Xcode不允许修改默认的代码片段。

为了修改它们,您可以从这里下载“Snippet Edit”程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接