要製作將與包裝一起發貨的鍵綁定,請創建a Default.sublime-keymap
file in your package。
通常,Sublime Text會查看用於突出顯示文檔的語法,而不是使用的文件擴展名,以確定keybindings/plugins是否應該處於活動狀態等。這主要是因爲它可以處理那些沒有「還沒有保存。如果您想遵循此準則,則可以使用selector
鍵綁定上下文。對於XML文件,您可能需要使用source.xml
。否則,您將需要創建一個EventListener,它定義了一個on_query_context
方法來檢查view.file_name()
。您可以使用os.path.splitext
方法來檢索文件擴展名。
如果你是真正的XML處理,那麼你可以使用默認的auto_indent_tag
鍵綁定爲靈感:
{ "keys": ["enter"], "command": "auto_indent_tag", "context":
[
{ "key": "setting.auto_indent", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^</", "match_all": true },
]
},
建立類似:
{ "keys": ["enter"], "command": "insert_snippet", "args": { "contents": "\n\t$1\n" }, "context":
[
{ "key": "setting.auto_indent", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "text.xml punctuation.definition.tag.begin", "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^</", "match_all": true },
]
},
這裏使用的正則表達式是非常簡單的,只要在插入符號爲>
之前立即檢查文本,在插入符號後立即插入文本即爲</
。這是可能的,因爲selector
檢查以下內容:a)我們是否使用XML語法; b)緊隨插入符號的範圍爲punctuation.definition.tag.begin
。 (您可以從工具菜單 - >開發人員 - >顯示範圍名稱,直接在插入符右側手動檢查範圍。)如果您使用的是自定義語法,則需要確保相應地調整這些內容。
在這種情況下,因爲我們使用輸入鍵的鍵綁定,所以在tmPreferences
文件中指定的縮進規則將被忽略。
可能重複[如何在ST3中設置括號縮進行爲](http://stackoverflow.com/questions/41456641/how-to-set-bracket-indentation-behavior-in-st3) –
@KeithHall thanks for鏈接。這確實是非常相關的,但不是真正的直接答案。例如,在帖子中顯示'xml'的情況下,我無法在'Packages'的'XML'文件夾中找到任何'.sublime-keymap'文件,所以我不知道該鍵綁定的位置。 – glS
你的用戶密鑰綁定總是在你的用戶包中,它們不在與你想要使用它們的地方相關的包中。爲了使綁定僅作爲XML文件的鏈接工作,您只需添加一個額外的上下文來檢查它是否爲XML文件。查看默認密鑰綁定文件中最後一個綁定的示例。 – OdatNurd