Visual studio code 如何以编程方式添加代码段?

Visual studio code 如何以编程方式添加代码段?,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我们通过键绑定和snippets json文件提供了一些自定义代码片段作为VS代码扩展的一部分: { "key": "ctrl+shift+i", "mac": "cmd+shift+i", "command": "editor.action.insertSnippet" }, 我们想要一个按钮,在当前光标位置向编辑器添加一个特定的代码段 如何在用户选择代码段后以编程方式调用“editor.action.insertSnippet”部分?您可以通过vscode.commands.

我们通过键绑定和snippets json文件提供了一些自定义代码片段作为VS代码扩展的一部分:

{
  "key": "ctrl+shift+i",
  "mac": "cmd+shift+i",
  "command": "editor.action.insertSnippet"
},

我们想要一个按钮,在当前光标位置向编辑器添加一个特定的代码段


如何在用户选择代码段后以编程方式调用“editor.action.insertSnippet”部分?

您可以通过
vscode.commands.executeCommand运行任何已注册的命令。另请参见。

您可以通过
vscode.commands.executeCommand运行任何已注册的命令。另请参见我在上发布的。

答复如下:

insertSnippet命令接受一个参数,该参数可以是代码段的名称,也可以是代码段本身。因此,{snippet:$console.log($1)$0}表示内联代码段,或者{langId:$csharp,name:$myFavSnippet}表示引用现有代码段

我在网上发帖

答复如下:

insertSnippet命令接受一个参数,该参数可以是代码段的名称,也可以是代码段本身。因此,{snippet:$console.log($1)$0}表示内联代码段,或者{langId:$csharp,name:$myFavSnippet}表示引用现有代码段


谢谢你,迈克。插入所选代码段的命令是什么(不涉及用户选择代码段)?谢谢,Mike。插入所选代码段的命令是什么(不涉及用户选择代码段)?因此,已经过去一年多了,文档没有更新这些信息。我尝试了
{langId:'blah',name:'mySnippet'}
,要么我做错了什么(完全可能),要么它实际上不支持该选项。此外,该对话被锁定,因此我无法在那里发表评论。@joshea据我所知,语言标识符必须来自此。另外,您可能需要确保mySnippet已经定义。如果不是,可能会有助于理解如何创建它。是的,我拥有所有这些,而我拥有的实际的
langId
javascriptreact
,在列表中。我将再次检查代码段是否已定义。认识我后,我可能在名称或其他方面有输入错误。@joshea我也没有幸使用
编辑器等编程方式插入现有代码段。insertSnippet({langId:“javascript”,name:“module_exports”}
-尽管我可能语法错误。似乎需要一个字符串,如doco所述。当然,
“editor.action.insertSnippet”
keybinding命令使用了那些花哨的
“langId”
“name”
参数,但不是
editor.insertSnippet
。然而,正如@Mike Lischke建议的那样,我设法通过编程方式使用
vscode.commands.executeCommand(“editor.action.insertSnippet”,{langId:“javascript”)实现了这一点,名称:“For Loop”}
。现在已经一年多了,文档没有更新这些信息。我尝试了
{langId:'blah',name:'mySnippet'}
,要么我做错了什么(完全可能),或者它实际上不支持该选项。此外,该对话被锁定,因此我无法在那里发表评论。@joshea据我所知,语言标识符需要来自此。此外,您可能希望确保mySnippet已定义。如果未定义,则可能有助于理解如何创建它。是的,我拥有所有这些,并且实际l
langId
我有一个是
javascriptreact
,它在那个列表上。我只需三次检查代码段是否已定义。知道我,我可能在名称或其他方面有输入错误。@joshea我也没有幸使用
编辑器以编程方式插入现有代码段。insertSnippet({langId:“javascript”,名称:“module_exports”}
-虽然我可能语法有误。似乎需要一个字符串,就像doco所说的那样。当然,
“editor.action.insertSnippet”
keybinding命令使用了那些花哨的
“langId”
”名称“
args,而不是
editor.insertSnippet
。然而,正如@Mike Lischke所建议的,我设法通过编程实现了这一点,例如使用
vscode.commands.executeCommand(“editor.action.insertSnippet”),{langId:“javascript”,name:“For Loop”})
"snippets": [
  {
    "language": "xml",
    "path": "./snippets/xml.json"
  }
]