【问题标题】:How to replace a variable in a snippet in Visual Studio Code?如何替换 Visual Studio Code 片段中的变量?
【发布时间】:2020-01-10 18:00:12
【问题描述】:

我使用带有键绑定的 javascript sn-p。

我在下面有这段代码:

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

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

box const box = 

但我期待

const box =

我怎样才能做到这一点?

【问题讨论】:

  • 或者我可以在命令部分使用另一个 VScode 命令“deleteWordLeft”。但我不知道如何同时使用两个命令。

标签: visual-studio-code code-snippets vscode-snippets


【解决方案1】:

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


最简单的方法是选择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"
},

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

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

【讨论】:

  • 请...举个例子。(我也试过'宏')。但它没有用!也许这个扩展已经无法维护(bcs,最新的 vscode 基于不同的命令 scoop )......或者也许我做错了什么......
  • 您是否使用了我链接的“多命令”扩展程序?这就是我上面使用的。我的代码不适用于“宏”扩展,它需要不同的语法。
  • 是的...我昨天使用了'multi-command'。(但在键绑定中'multiCommand.insertConst'(command) 是未知的。它给出带有下划线的警告)
  • 实际上我正在为 vs code 开发一个 js sn-p 扩展。但是感谢您的回答...我还要求 vscode 团队在 github 中添加多命令支持。如果您有兴趣可以查看退出我的分机marketplace.visualstudio.com/items?itemName=nur.just-black祝你有美好的一天!
  • 是的,尽管有警告,多命令宏仍然对我有用。作者知道这些 - 显然其他一些宏扩展也会收到相同的警告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 2018-05-08
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 2017-02-11
相关资源
最近更新 更多