2

我想在SublimeText中創建一個JavaScript箭頭函數代碼片段。當我輸入一個打開的文件時應該可用:(。我希望能夠以標籤來創建此:如何在觸發SublimeText自定義代碼段時忽略(或刪除)自動匹配括號?

() => {} 

具有自動匹配啓用(一個功能,我喜歡,正常),我想不出如何避免這個問題:

() => {}) 

這裏是代碼我到目前爲止,除了自動匹配問題,它的偉大工程:

<snippet> 
    <content><![CDATA[ 
(${1}) => {$2} 
]]></content> 
    <tabTrigger>(</tabTrigger> 
    <scope>source.js</scope> 
</snippet> 

回答

2

片段只能插入文本或替換選定的文本 - 他們無法在其他地方修改的文本文檔中,就連旁邊的文字符號。我認爲實現你想要的最好的方法是使用一個鍵綁定,當按下)並獲得鍵綁定來插入片段時,將優先於默認的auto_match_enabled行爲(這也是鍵綁定),避免需要一個單獨的.sublime-snippet文件

{ 
    "keys": ["(", "tab"], "command": "insert_snippet", "args": { "contents": "(${1}) => {$2}" }, "context": 
    [ 
     { "key": "selector", "operator": "equal", "operand": "source.js" } 
    ] 
}, 

需要注意的是,如果你想的片段在命令面板Snippet:選項仍然顯示,你可以保持您.sublime-snippet文件沒有任何負面影響 - 鍵綁定將優先考慮在片段中定義的選項卡觸發器上

+0

這是行得通的!謝謝。假設片段無法刪除現有內容?只插入?另外,你碰巧知道這個API是否記錄在案?我沒有在這裏關注「背景」鍵中發生的事情(但我希望能夠在未來建立自己的)。 – user6689821

+1

我認爲最接近你可以得到一個片段刪除現有的內容是在這種情況下使用它(擴大作爲一個按鍵的結果),然後選擇一些文本,然後按下鍵,這將取代選擇與片段。請注意,在這種情況下,特殊變量'$ SELECTION'可用於您的代碼段。你也可以使用一個宏(再次按下按鍵),它將首先執行命令來刪除一些文本,然後展開代碼段。 – OdatNurd

+1

此外,還提供關於鍵綁定中上下文使用的文檔。 Sublime提供了一組上下文,但是如果需要,使用插件代碼可以構建自己的代碼。 http://docs.sublimetext.info/en/latest/reference/key_bindings.html – OdatNurd

相關問題