2

我正在尝试在 SublimeText 中创建一个 JavaScript 箭头函数片段。当我输入一个开放的括号时它应该可用:(。我希望能够通过标签来创建这个:

() => {}

启用自动匹配(通常是我喜欢的功能)后,我不知道如何避免这种情况:

() => {})

这是我到目前为止的代码,除了自动匹配问题外,它的效果很好:

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

1 回答 1

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文件而不会产生任何负面影响 - 键绑定将优先于片段中定义的选项卡触发器。

于 2017-04-10T12:06:18.373 回答