0

我使用带有键绑定的 javascript 片段。

我在下面有这段代码:

    {
        "key": "alt+c", 
        "command": "editor.action.insertSnippet",
        "when": "editorTextFocus",
        "args": {
            "snippet": " const $TM_CURRENT_WORD = $1"
        }
    },

如果我输入box然后按alt+ c,我会得到...

box const box = 

但我期待

const box =

我怎样才能做到这一点?

4

1 回答 1

0

片段将始终在触发片段时光标所在的任何位置插入文本 - 这就是您看到所获得行为的原因。如果首先选择了该词,则插入将像正常一样替换该词。


最简单的方法是选择box文本,然后选择alt+ c,您将得到结果。但是有额外的选择步骤。


这也是一个宏解决方案。

使用像multi-command这样的宏扩展把它放到你的 settings.json 中:

 "multiCommand.commands": [
    {
      "command": "multiCommand.insertConst",  // whatever name you want to give it
      "sequence": [
        "cursorWordLeftSelect",
        {
          "command": "editor.action.insertSnippet",
          "args": {
              "snippet": "const $TM_SELECTED_TEXT = $1"
          }
        }
      ]
    }
]

和一些键绑定:

{
  "key": "alt+c",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.insertConst" },  // use same name here
  "when": "editorTextFocus"
},

或者你可以修改你的代码片段,这样你就不用先输入变量名。您将触发代码段,然后键入变量名称,然后键入tab它的值,如下所示:

{
    "key": "alt+c", 
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
        "snippet": " const $1 = $2"
    }
},
于 2020-01-10T20:48:23.160 回答