Xcode 4在新线上带有开口支撑

时间:2011-02-25 17:12:44

标签: xcode xcode4

似乎新的Xcode 4不再适用XCCodeSenseFormattingOptions了。至少对我来说:(

无论如何,你知道如何将左大括号放到Xcode 4中自动完成的新行吗?我以前在终端输入这个,但它不适用于新的Xcode。

defaults write com.apple.Xcode XCCodeSenseFormattingOptions -dict BlockSeparator "\\n" PreMethodDeclSpacing ""

6 个答案:

答案 0 :(得分:29)

XCode 4使用“代码片段”进行自动完成,并附带内置库:您可以通过单击“库”窗格中的{ }图标查看代码片段库,这可能是在主XCode窗口的右下角。

所有XCode 4的内置代码片段都将开头大括号与语句放在同一行 - 这是XCode 4的if语句的代码片段,例如:

if (<#condition#>) {
  <#statements#>
}

因此,如果您希望XCode 4自动完成,请执行以下操作:

if (<#condition#>) 
{
  <#statements#>
}

...然后你必须相应地编辑代码片段。反过来,这会导致两个问题:

  1. XCode 4中内置了44个代码段,您必须分别编辑每个代码段。
  2. XCode 4不允许您编辑内置代码段。
  3. 这些问题比在XCode 3中运行的简单defaults write命令更具挑战性 - 但它是可能的,如果你已经确定并且你可以编辑属性列表,那么深入研究XCode 4的内容并逐一更改这些代码片段。

    /Developer/Library/Xcode/PrivatePlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets包含XCode 4的内置代码片段库。这可能不言而喻,但你应该在收费和编辑之前备份这个文件 - 之后你应该再做一次备份,并用你新的和改进的代码片段留出一份文件的副本,因为你会当您安装下一版本的XCode 4时,几乎肯定会覆盖/Developer/Library/Xcode的内容。(Apple也可能会更改此文件的格式,添加新的代码片段或执行任何可能呈现的其他内容这个答案无效。)

    如果你直接从App Store安装了Xcode 4.3或更高版本,那么一切都在Xcode.app包中。 SystemCodeSnippets.codesnippets的路径为/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets

    无论如何,你会发现上面的文件包含几个像这样的条目:

    <dict>
        <key>IDECodeSnippetVersion</key>
        <integer>1</integer>
        <key>IDECodeSnippetCompletionPrefix</key>
        <string>if</string>
        <key>IDECodeSnippetContents</key>
        <string>if (&lt;#condition#&gt;) {
      &lt;#statements#&gt;
    }</string>
        <key>IDECodeSnippetIdentifier</key>
        <string>D70E6D11-0297-4BAB-88AA-86D5D5CBBC5D</string>
        <key>IDECodeSnippetLanguage</key>
        <string>Xcode.SourceCodeLanguage.C</string>
        <key>IDECodeSnippetSummary</key>
        <string>Used for executing code only when a certain condition is true.</string>
        <key>IDECodeSnippetTitle</key>
        <string>If Statement</string>
        <key>IDECodeSnippetCompletionScopes</key>
        <array>
            <string>CodeBlock</string>
        </array>
    </dict>
    

    这是自动填充if语句的代码段。编辑IDECodeSnippetContents以将左括号放在新行上,保存您的工作,然后重新启动XCode 4;如果一切顺利,您应该能够输入if语句并查看结果。

    您需要至少进行六次以上的修改才能涵盖最常见的自动填充功能(forwhile等),如果您想彻底完成,则需要大约40个单独的编辑。这是很多工作,但如果你真的,真的希望XCode 4的自动完成功能将你的开口括号放在一个单独的行上,就可以完成。

答案 1 :(得分:4)

在Xcode 4中无法做到这一点。请file a bug

答案 2 :(得分:2)

只需删除一个覆盖Apple版本的用户代码。通过在“完成快捷方式”字段中输入与默认剪切中相同的名称来执行此操作。看看这个视频,了解如何: http://s3.amazonaws.com/screencasts.pragmaticstudio.com/017_custom_code_snippets.mov

答案 3 :(得分:2)

在此处查看我修改的(系统范围)Xcode 4.2代码段:

http://forrst.com/posts/Put_that_where_it_belongs_Xcode-PNL

它应该照顾所有相关的开放花括号用于iOS开发..

答案 4 :(得分:2)

在Xcode 4.3.1中,如果您从终端编辑以下文件作为sudo,如上面描述的Scott Forbes,您可以更改左括号出现的位置。我想,它会随着Xcode的新安装而消失,所以我会投票认为这也是Apple的一个错误。

/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets

莱斯利

答案 5 :(得分:2)

我使用SnippetEdit进行Xcode4,效果惊人。它基本上允许您将xcode提供的旧片段替换为您自己定义的新片段。点击此处:https://www.macupdate.com/app/mac/43352/snippet-edit