如何替换 Visual Studio 代码片段中的变量?

How to replace a variable in a snippet in Visual Studio Code?

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

我有以下代码:

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

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

box const box = 

但我预计

const box =

我怎样才能做到这一点?

代码段将始终在触发代码段时光标所在的任何位置插入文本 - 这就是您看到所获得行为的原因。如果该词是第一个 selected,则插入将像正常情况一样替换该词。


最简单的方法就是 select box 文本,然后 alt+c 然后你会得到你的结果。但是有了 selecting 的额外步骤。


这里还有一个宏解决方案。

使用像 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 = "
          }
        }
      ]
    }
]

和一些键绑定:

{
  "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  = "
    }
},