我想知道我是否可以在VSCode用户定义的代码段中引用另一个代码段。
说我有
"Test1": {
"prefix": "snippet_test1",
"body":
"something"
}
并且有一种方法可以将snippet_test1插入另一个类似的代码段中
"Test2": {
"prefix": "snippet_test2",
"body":
"${1:snippet_test1}"
}
现在snippet_test2仅输出snippet_test1
,而不是snippet_test1的内容。
假设您有这三个摘要(在某些摘要文件中:)>
"snippet1": { "prefix": "sn1", "body": [ "body of snippet1", "snippet3 = $2", "$1", "some other stuff", "${1:snippet2}", ], "description": "build the multi-snippet" }, "snippet2": { "prefix": "sn2", "body": [ "body of snippet2", ], "description": "insert2" }, "snippet3": { "prefix": "sn3", "body": [ "I am snippet3", ], "description": "insert3" },
然后您的宏将先打印snippet1,然后将光标移至任何位置-在snippet1中,光标最初将同时位于$ 1 tabstop位置-宏将插入第二个snippet2。
然后在宏中使用"jumpToNextSnippetPlaceholder",
命令,您将跳至下一个制表位$ 2,该位置可能在任何位置-我将其放在$ 1之前(插入snippet2的位置),并将snippet3插入该位置。
您可以看到snippet1是在其中构建用于插入其他摘录的结构的位置-根据tabstops。
宏看起来像这样(在您的settings.json中:)]
"multiCommand.commands": [ { "command": "multiCommand.insertMultipleSnippets", "sequence": [ { "command": "editor.action.insertSnippet", "args": { "name": "snippet1", } }, { "command": "editor.action.insertSnippet", "args": { "name": "snippet2", } }, "jumpToNextSnippetPlaceholder", { "command": "editor.action.insertSnippet", "args": { "name": "snippet3", } }, ] } ],
然后使用一些键绑定(keybindings.json)触发宏:
{ "key": "alt+m", // or whichever keybinding you choose "command": "multiCommand.insertMultipleSnippets", },
您不能使用任何代码段前缀来触发整个宏,但是如果需要,您仍然可以使用各个代码段前缀来单独触发每个代码段。
使用上面的snippet1,snippet2和snippet3,运行宏的结果将是:
body of snippet1
snippet3 = I am snippet3
body of snippet2
some other stuff
body of snippet2