日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义Xcode代码模板:Code Snippet

發布時間:2024/9/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义Xcode代码模板:Code Snippet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Xcode強大的代碼提示功能是有目共睹的,用過都知道,可是你是否想過添加一些自定義的代碼提示模板?你是否想讓if默認的左括號挪到下一行?還有for、while、switch等等……如果你有這方面的需求的話,這篇文章剛好可以幫到你!?

在Xcode左下角有個花括號的頁簽,這里面存儲了很多代碼提示模板,如下圖


點擊列表里面任一個項目都會彈出一個說明框,里面有個EditDone按鈕,這很容易讓人產生編輯的想法,其實這是個錯覺:這些內置的代碼模板是不可編輯的!你看到這里可能會有點著急,因為你可能想問那if左括號是不是不能挪到下一行了?!其實,你如果用過Apple的產品,那你應該會想到Apple不會這么SB,這些都是可以編輯的!下面我們介紹編輯Xcode內置代碼模板。

編輯Xcode內置代碼模板

Xcode的所有代碼模板是用一個plist格式xml文件描述的,這文件存儲在Xcode的安裝目錄:

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

可以用任意文本編輯器打開這個代碼模板配置文件,這是一段if的代碼模板的XML配置,

<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>

其中IDECodeSnippetContents字段表示具體代碼模板的內容,雖然Xcode不允許編輯內置的代碼模板,但是Xcode允許用戶自定義代碼模板,并且每個模板有一個唯一標識符IDECodeSnippetIdentifier,其中if模板的唯一標記是D70E6D11-0297-4BAB-88AA-86D5D5CBBC5D,那么既然每個代碼模板是唯一存在的,那么如果自定義的模板的唯一標識符與內置代碼模板相同了會發生什么情況?覆蓋!這是我們修改內置代碼模板的關鍵入口,也是核心思想!

到這里一切都變得很清晰了:我們只要自定義一個相同標識符的帶模板就可以覆蓋內置的代碼模板。官方文檔介紹了創建自定義模板的方法:在Xcode輸入代碼模板代碼,然后拖拽到Xcode的模板欄,然后點擊“Edit”就是可以做相關的修改,編輯完后點擊“Done”就可以使用了,然后在下面這個目錄可以找到模板配置文件。

~/Library/Developer/Xcode/UserData/CodeSnippets/

如果你用上述方法添加了一個自定義模板,那么你在這個目錄可能看到類似D70E6D11-0297-4BAB-88AA-86D5D5CBBC5D.codesnippet命名的文件,其實這個文件名就是模板的唯一標識符。其實我們并不想要這樣的命名方式,因為不方便維護以及分享,雖然在Xcode里面可以很方便地編輯他們。慶幸的是這個文件名是可以修改的,你可以像這樣用一些有含義的字符來修改命名。

但是有個問題:Xcode會自動為我們的模板分配一個唯一標識符,這樣就不能達到覆蓋的目的。有些同學可能想到從SystemCodeSnippets.codesnippets配置里面查找相關的標識符,然后黏貼過來,這樣確實可以達到目的。不過現在我給大家推薦另外一種方法。

首先,到SystemCodeSnippets.codesnippets里面找到你要修改的模板配置,然后復制黏貼到如下這段配置中

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><!--code config here--> </plist>

然后修改IDECodeSnippetVersion鍵值為2,暫時不確定為什么要這么修改,但是Xcode生成的自定義模板配置都是這個值,保持默認1也沒多大問題,只是Xcode有時會自動用標識符替換你的自定義命名,所以用2是比較合適的。這樣還沒完,因為還要添加一個鍵值為true的字段IDECodeSnippetUserSnippet,該字段標記了模板是否為自定義的,如果是自定義的模板但是沒有這個字段,你的Xcode啟動后可能會崩潰…orz

<key>IDECodeSnippetUserSnippet</key> <true/>

那么如果替換內置的if模板,那么完整的配置應該是這樣的。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict><key>IDECodeSnippetCompletionPrefix</key><string>if</string><key>IDECodeSnippetCompletionScopes</key><array><string>CodeBlock</string></array><key>IDECodeSnippetContents</key><string>if (&lt;#condition#&gt;) {&lt;#statements#&gt; }</string><key>IDECodeSnippetIdentifier</key><string>5163356F-D409-4EDA-B263-EA2E07A50B9C</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>IDECodeSnippetUserSnippet</key><true/><key>IDECodeSnippetVersion</key><integer>2</integer></dict> </plist>

你可能注意到類似&lt;#condition#&gt;這樣的代碼,它們是什么呢?你再寫代碼遇到代碼提示的時候,可能遇到過藍色泡泡一樣的東西,可以用Tab鍵來切換,那么這個奇怪的字符就是用來添加藍色泡泡的。因為這是XML配置,所以做了HTML轉義;如果你在Xcode里面編輯模板并添加藍色泡泡的話,直接輸入<#condition#>即可,##符號之間可以為任意字符。

隱藏代碼模板提示

有時候你可能想要隱藏某個內置的模板,這樣的需求也是可以完成的。你只需要把IDECodeSnippetCompletionPrefix字段的鍵值留空既可以,如果你把如下這段配置保存到模板目錄,那么你的Xcode將不再彈出if語句的代碼提示。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict><key>IDECodeSnippetCompletionPrefix</key><string></string><key>IDECodeSnippetCompletionScopes</key><array><string>CodeBlock</string></array><key>IDECodeSnippetContents</key><string>if (&lt;#condition#&gt;) {&lt;#statements#&gt; }</string><key>IDECodeSnippetIdentifier</key><string>5163356F-D409-4EDA-B263-EA2E07A50B9C</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>IDECodeSnippetUserSnippet</key><true/><key>IDECodeSnippetVersion</key><integer>2</integer></dict> </plist>

在Xcode里面輸入if,就不見了if statement的提示

是不是很酷?!

最后總結一下自定義的注意事項:

  • 自定義目錄不能有相同標識符的模板,否則Xcode啟動后會崩潰;
  • 自定義母的模板標識符可以跟系統默認模板標識符相同,可以達到覆蓋效果;
  • 若要使用自定義模板覆蓋系統模板,則必須有DECodeSnippetUserSnippet字段,否則Xcode啟動后會崩潰;

總結

以上是生活随笔為你收集整理的自定义Xcode代码模板:Code Snippet的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕av亚洲精品一部二部 | 在线中文字幕日韩 | 国产精品一品 | 91porny丨首页入口在线 | 激情综合五月 | 秋霞午夜影院 | 欧美色图亚洲色 | 日韩在线观看第一页 | 欧美精品乱码久久久久久按摩 | 亚洲视频免费在线 | 免费播放av | 毛片内射久久久一区 | 成年免费在线观看 | 高潮喷水一区二区三区 | 成人免费视频网站在线看 | 久久男人 | 欧美亚洲精品天堂 | 欧美一级片免费看 | 在线亚洲欧美 | 一级中文字幕 | 成年人网站av | 91精品人妻一区二区三区果冻 | 亚洲成人免费在线 | 激情综合色 | 国产91免费看 | 很黄很污的视频 | 一区二区在线免费观看 | 天天操天天操天天操天天 | 欧美成人精品在线观看 | 日韩av不卡一区 | 在线观看www视频 | 国产肉体ⅹxxx137大胆 | 欧洲精品在线观看 | 欧美性生活网 | 4hu在线观看 | 综合色婷婷 | 少妇高潮一区二区三区99欧美 | 黄色工厂在线观看 | 日本三级日本三级日本三级极 | 日韩欧美视频一区二区 | 性中国古装videossex | 日本污视频在线观看 | www.香蕉视频 | 五月天激情综合网 | 国产色 | 怨女1988国语版在线观看高清 | 欧美粗又大 | 免费视频黄色 | 亚洲色在线视频 | 波多野结衣视频观看 | 日本免费福利视频 | 美女吞精视频 | 国产一级做a | 经典三级久久 | 26uuu国产精品视频 | 国产真人做爰毛片视频直播 | 五月婷婷丁香网 | 区一区二在线观看 | 中国性猛交 | 在线观看自拍 | 特级毛片网站 | 日韩视频在线观看视频 | 国产系列精品av | 爱吃波客今天最新视频 | 国产三级精品三级在线观看 | 强制高潮抽搐哭叫求饶h | 成人性生交大全免 | 国产精自产拍久久久久久蜜 | 亚洲一品道 | 99re中文字幕 | 韩国明星乱淫(高h)小说 | 亚洲天堂美女 | 波多野吉衣在线视频 | 伊人久久天堂 | 国产高清露脸 | 丰满人妻一区二区三区53号 | 国产精在线| wwww欧美 | 成人欧美一区二区三区黑人冫 | 色悠悠av| 黄色录像二级片 | 特黄a级片 | 五月天婷婷基地 | 国产三级国产精品国产专区50 | 美女扒开腿让男人操 | 欧美日韩黄色网 | 禁久久精品乱码 | 特黄在线 | 欧美成人看片黄a免费看 | 综合久久综合久久 | 男生操女生屁股 | 久久99影院 | 青青草手机在线观看 | 欧美日韩国产黄色 | 成人涩涩网站 | www.九色| 精品成人无码一区二区三区 | 久久99九九| 曰批免费视频播放免费 |