Visual studio code 如何在Visual Studio代码片段中替换变量?

Visual studio code 如何在Visual Studio代码片段中替换变量?,visual-studio-code,code-snippets,vscode-snippets,Visual Studio Code,Code Snippets,Vscode Snippets,我使用带有键绑定的javascript代码段 我有以下代码: { "key": "alt+c", "command": "editor.action.insertSnippet", "when": "editorTextFocus", "args": { "snippet": " const $TM_CURRENT_WORD = $1" } }, 如果我键入box,然后按a

我使用带有键绑定的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 =

我怎样才能做到这一点

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


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


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

使用类似的宏扩展将其放入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"
    }
},

或者我可以在命令部分使用另一个VScode命令“deleteWordLeft”。但我不知道如何同时使用这两个命令。请…举个例子。(我也试过“宏”),但它不起作用!也许这个扩展没有维护(bcs,基于不同命令的最新vscode)…或者我做错了什么…你使用了我链接到的“多命令”扩展吗?这就是我上面用的。我的代码不能与“宏”扩展一起使用,它需要不同的语法。是的……我昨天使用了“multi-command”。(但在keybinding中,“multi-command.insertConst”(命令)未知。它用下划线发出警告)事实上,我正在为vs代码开发一个js代码段扩展。但是谢谢你的回答…我还请求vscode团队在github中添加多命令支持。如果你感兴趣,可以查看我的扩展。祝你有愉快的一天!是的,尽管有警告,多命令宏仍然适用于我。作者意识到了这些——显然,其他一些宏扩展也收到了同样的警告。