javascript 如何创建VS代码段,使其使用代码段前缀之前的已有文本,并在代码段正文中使用它?

kadbb459  于 2023-05-05  发布在  Java
关注(0)|答案(3)|浏览(210)

我想为console.log(变量)做一个代码片段,但我想用“suffix”做一个前缀。下面是一个例子:

var name = "Marco";
var car = "Volvo";

name.log > TAB > console.log(name);

当我像上面的例子一样在“.log”之后写变量“name”时。之后,按下键盘上的TAB键,我想得到我的“console.log(name);“。当我这样做的时候:car.log〉TAB,我想得到“console.log(car);“.

piv4azn7

piv4azn71#

你能做的就是

  • 型号name
  • 选择name,使用Ctrl+D
  • 型号clog

clog是以下代码片段:

"consolelog": {
    "prefix": "clog",
    "body": "console.log(${TM_SELECTED_TEXT})"
}
w8f9ii69

w8f9ii692#

还有其他几个选项,特别是参见How can I customize a suffix snippet, replacing the variable in VS Code?和其中提到的扩展:
TS/JS postfix completion内置支持someVar.log =〉console.log(someVar)
您也可以自动化的过程中,替换现有的文本与一个片段,然后你必须使用一个键绑定触发器,而不是一个片段前缀。但不需要扩展。在您的keybindings.json中:

{
  "key": "alt+c",            // whatever keybinding you want
  "command": "runCommands",
  "args": {
    "commands": [
      "cursorHomeSelect",
      {
        "command": "editor.action.insertSnippet",
        "args": {
          "snippet": "console.log(${TM_SELECTED_TEXT})",
        }
      },
    ]
  },
}

对于第二个版本,只需键入name,然后按alt+c。

kgqe7b3p

kgqe7b3p3#

查看Snippets的文档,我认为您所要求的不受支持。
使用代码片段的机制是基于文本的精确匹配(prefix字段),而变量包括TM_CURRENT_LINETM_CURRENT_WORD之类的东西,即使给定了这些,我也看不到一种方法来让它们做你想要的事情。
我能找到的最接近的是

"test": {
    "prefix": ".log",
    "body": "console.log(${TM_CURRENT_LINE/^(\\s+.*?)?(\\w+)\\.log(.*)$/$2/})"
}

但我不知道如何“消费”/删除代码段前缀之前的预先存在的文本。

相关问题