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