2012-11-15 79 views
1

我有許多不同類型的項目使用類似的代碼,我的目標是在SublimeText2中創建只在給定項目上激活的代碼段和鍵綁定。SublimeText2自定義範圍

所以,例如,我有jsg1.htmljsg40.html,我也有kwa1.htmlkwa40.html。這兩個組中的每個組都有它們獨有的代碼,並且我想爲每個組創建不同的片段和鍵綁定。

這使我想要創建自定義文件類型,如.kwa.jsg,以便我可以創建片段/鍵綁定,並將作用域設置爲這些文件類型。

但是,我不能讓它工作。這是我已經試過:

a.sublime - 摘錄

<snippet> 
<content><![CDATA[ 
<a href="$1" style="font-family: Segoe UI, Lucida Sans Unicode, Arial; color:#2f6497; font-size:14px; text-decoration:underline;">$2</a> 
]]></content> 
<tabTrigger>aj</tabTrigger> 
<scope>source.jsg</scope> 
</snippet> 

jsg.tmLanguage

<?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>fileTypes</key> 
    <array> 
    <string>jsg</string> 
    </array> 
    <key>name</key> 
    <string>jsg</string> 
    <key>scopeName</key> 
    <string>source.jsg</string> 
</dict> 
</plist> 

這兩個文件都在我的Packages/User文件夾中。但是,我有一個文件,test.jsg,並且該代碼段不會在其中激活。

所以問題是:

什麼是創建的HTML文件組將使用相同的密鑰綁定和片斷定製範圍的最佳方式?是否通過爲新的文件類型創建自定義語法來創建自定義範圍?或者,還有更好的方法?如果這是最好的方法,爲什麼我的代碼段不能在我的.jsg文件中工作?

回答

0

所以我想通了。要生成您自己的密鑰綁定和片段,您需要創建一個自定義scope。要顯示文檔的當前範圍,你可以使用熱鍵:

Ctrl + ⇧ + Alt + P

如果打開html文件並運行此命令,你應該看到它顯示text.html。我們的目標是製作一個文件類型,其高亮顯示爲html語法,但顯示的scope,其中.we是我們的自定義文件類型(也就是說,它可以是我們想要的任何內容)。然後,我們可以在我們的鍵綁定和片段文件中使用該scope

首先要做的是:我們需要確保我們的自定義文件類型尚未與html關聯。如果您在View - Syntax - Open all with current extension as...之下設置了該設置,您可能會最初嘗試使其文件類型與html具有相同的高亮顯示。別擔心,我們仍然會這樣做,但我們必須以另一種方式去做。

如果您已經完成了此操作,請找到JSON文件../Path/to/Sublime Text 2/Packages/Users/HTML.sublime-settings,並從屬性extensions中刪除您關聯的擴展名。如果您在Windows上找到Packages文件夾時遇到問題,通常會將其隱藏在User/AppData/Roaming中。

因此,現在我們已經解開了我們的文件,我們必須首先找到使用我們想要的突出顯示的語言的設置文件。在我的情況下,它是html,所以我去了../Path/to/Sublime Text 2/Packages/HTML。將文件html.tmLanguageComments.tmPreferences複製並放在Packages的任何位置。對於組織,我將它們放入Packages/Users/xxx,其中xxx是我的自定義文件類型。當我們稍後創建片段時,我還會建議您將它們保留在那裏,以便與您的文件類型相關的所有內容都位於同一位置。

無論如何,根據您的文件類型對文件進行相應的重命名。在文件中,您需要更改三個屬性:fileTypes(位於開頭),namescope(後兩位屬於最後)。相應地替換這些內容。請確保scopeName的格式爲text.___

更改Comments.tmPreferences文件的scope,您將很樂意使用自定義文件類型。它現在將顯示html文件的突出顯示,並允許您在片段和鍵綁定中將其用作scope

此外,如果您的自定義文件是HTML文件,瀏覽器在打開它們時不會顯示任何問題。

任務完成!