2011-02-25 24 views
24

看起來新的Xcode 4不再適用XCCodeSenseFormattingOptions了。至少對我來說:(Xcode 4在新生產線上用開口支架

反正你知道如何將左大括號爲新的線路爲自動完成在Xcode 4?我以前在終端輸入這個,但它不會爲新的Xcode的工作。

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

我有同樣的問題。 – David 2011-03-10 19:10:27

+0

true ...同樣的問題 – xpepermint 2011-03-20 23:50:56

+0

我在這裏回答了類似的問題:(有一個應用程序!) http://stackoverflow.com/questions/4963034/xcode-built-in-snippets-edit/11135963#11135963 – Cocoaholic 2012-06-21 10:23:54

回答

4

有沒有辦法做到這一點在Xcode 4請不要file a bug

+0

無法在bug記者發現,所以我做了提交錯誤 - 10613842 – 2011-12-21 16:53:04

29

的XCode 4個使用「代碼段」做自動完成,並配有內置其中的庫船:您可以查看代碼通過點擊庫窗格中的{ }圖標(可能位於主XCod的右下角)中的代碼庫電子窗口。

所有的XCode 4內置的代碼片段將左大括號在同一行的聲明 - 這是的XCode 4的一個if聲明代碼段,例如:

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

所以,如果你想XCode 4自動完成,如下所示:

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

...然後您必須相應地編輯代碼段。這又導致兩個問題:

  1. 在XCode 4中內置了44個代碼片段,您必須分別編輯每個代碼片段。
  2. XCode 4不允許您編輯內置的代碼片段。

這些問題比3的XCode工作的簡單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聲明並查看結果。

爲了覆蓋最常見的自動填充(for,while等),您至少需要進行半打以上的編輯,如果您想徹底查看,需要進行大約40次單獨編輯。這是很多工作,但如果真的,確實希望XCode 4的自動完成將您的開放大括號放在一個單獨的行上,它可以完成。

+0

和正則表達式是... – Ziggy 2012-06-14 23:14:55

+10

有,你可以用它來管理和編輯的代碼片段,稱爲[片段編輯](HTTP應用程序://cocoaholic.com/snippet_edit)。從片段管理中消除了很多痛苦。 – epologee 2012-06-21 10:34:29

+1

注意片段編輯爲$ 8 – arolson101 2012-07-29 19:29:13

2

看看我的修改(系統級)片段的Xcode的4.2位置:

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

應該採取iOS的所有相關的開放大括號的護理髮展..

+0

感謝您提供修改後的文件Sveinung!複製粘貼並且看起來像所有我測試過的都很好。 (xCode 4.5b) – 2012-06-13 18:56:34

+0

酷,很高興知道4.5仍然支持這種「黑客」。 – 2012-06-14 08:52:26

+0

我不得不把它放在/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets中,但它在xcode 4.4中工作 – arolson101 2012-07-29 19:30:58

2

在Xcode中4.3.1,如果從所述終端編輯下列文件作爲須藤,如上所述斯科特福布斯,則可以將開括號顯示的位置而改變。它會消除新的Xcode的安裝,我會想象,所以我會投票,這也是蘋果的一個錯誤。

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

張國榮