如何在 vscode 片段中增加变量,例如行号
How to increment a variable, like the line number, in a vscode snippet
我在 VScode 中有一个多行片段。问题是,TM_LINE_NUMBER 给出了触发片段的行号,我需要将该数字增加 1,以便它等于它实际所在的行号。
"Console_Log_Test": {
"prefix": "clg",
"body": [
"//Debugging (remove)",
"console.log('Line #${TM_LINE_NUMBER}');"
]
},
我该怎么做?
至少有这两个选项:
"Console_Log_Test": {
"prefix": "clg",
"body": [
"//Debugging (remove)",
"console.log('Line #${1:${TM_LINE_NUMBER}}');"
// "console.log('Line #${TM_LINE_NUMBER}');"
]
}
有了上面至少行号被选中,你可以很容易地自己改变它。
更有趣的是把它做成一个“宏”,它将完全实现你想要的。
您将需要类似 multi-command extension 的内容。
将上面的代码片段更改为:
"Console_Log_Test": {
"prefix": "clg",
"body": [
"console.log('Line #${TM_LINE_NUMBER}');"
]
}
所以现在代码片段只打印其中包含 TM_LINE_NUMBER
的行。
在您的用户设置中:
"multiCommand.commands": [
{
"command": "multiCommand.lineNumber",
"sequence": [
{
"command": "type",
"args": {
"text": "//Debugging (remove)\n"
}
},
{
"command": "editor.action.insertSnippet",
"args": {
// "langId": "csharp",
"name": "Console_Log_Test"
}
}
]
}
现在代码片段实际上是在您想要的行号上触发的。
在你的keybindings.json:
{
"key": "ctrl+alt+l",
"command": "extension.multiCommand.execute",
"args": { "command": "multiCommand.lineNumber" }
},
现在 Ctrl-Alt-L 完全按照您的意愿进行操作。设置起来有点麻烦,但却是一种非常强大的学习方法。
[编辑]
我想知道是否有办法让一些 emmet 数学起作用,令人惊讶的是,它确实起作用。
使用此代码段:
"log line number on second line": {
"prefix": "clg",
"body": [
"//Debugging (remove)",
"console.log('Line #${TM_LINE_NUMBER}"
]
},
除了最后的 ');
,该片段包含所有内容
现在这个宏:
{
"command": "multiCommand.lineNumber",
"sequence": [
{
"command": "editor.action.insertSnippet",
"args": {
"name": "log line number on second line"
}
},
"editor.emmet.action.incrementNumberByOne",
{
"command": "type",
"args": {
"text": "');\n"
}
}
]
},
会起作用的!!行号将递增 1,然后 ');\n
将添加到该行的末尾。
您可以使用 "editor.emmet.action.evaluateMathExpression"
代替 incrementNumberByOne
命令来进行更复杂的数学运算。
要将行号加 10,请使用
"console.log('Line #${TM_LINE_NUMBER}+11"
在代码段中,"editor.emmet.action.evaluateMathExpression"
代替多命令宏中的 "editor.emmet.action.incrementNumberByOne"
。
我在 VScode 中有一个多行片段。问题是,TM_LINE_NUMBER 给出了触发片段的行号,我需要将该数字增加 1,以便它等于它实际所在的行号。
"Console_Log_Test": {
"prefix": "clg",
"body": [
"//Debugging (remove)",
"console.log('Line #${TM_LINE_NUMBER}');"
]
},
我该怎么做?
至少有这两个选项:
"Console_Log_Test": {
"prefix": "clg",
"body": [
"//Debugging (remove)",
"console.log('Line #${1:${TM_LINE_NUMBER}}');"
// "console.log('Line #${TM_LINE_NUMBER}');"
]
}
有了上面至少行号被选中,你可以很容易地自己改变它。
更有趣的是把它做成一个“宏”,它将完全实现你想要的。
您将需要类似 multi-command extension 的内容。
将上面的代码片段更改为:
"Console_Log_Test": { "prefix": "clg", "body": [ "console.log('Line #${TM_LINE_NUMBER}');" ] }
所以现在代码片段只打印其中包含 TM_LINE_NUMBER
的行。
在您的用户设置中:
"multiCommand.commands": [ { "command": "multiCommand.lineNumber", "sequence": [ { "command": "type", "args": { "text": "//Debugging (remove)\n" } }, { "command": "editor.action.insertSnippet", "args": { // "langId": "csharp", "name": "Console_Log_Test" } } ] }
现在代码片段实际上是在您想要的行号上触发的。
在你的keybindings.json:
{ "key": "ctrl+alt+l", "command": "extension.multiCommand.execute", "args": { "command": "multiCommand.lineNumber" } },
现在 Ctrl-Alt-L 完全按照您的意愿进行操作。设置起来有点麻烦,但却是一种非常强大的学习方法。
[编辑]
我想知道是否有办法让一些 emmet 数学起作用,令人惊讶的是,它确实起作用。
使用此代码段:
"log line number on second line": {
"prefix": "clg",
"body": [
"//Debugging (remove)",
"console.log('Line #${TM_LINE_NUMBER}"
]
},
除了最后的 ');
现在这个宏:
{
"command": "multiCommand.lineNumber",
"sequence": [
{
"command": "editor.action.insertSnippet",
"args": {
"name": "log line number on second line"
}
},
"editor.emmet.action.incrementNumberByOne",
{
"command": "type",
"args": {
"text": "');\n"
}
}
]
},
会起作用的!!行号将递增 1,然后 ');\n
将添加到该行的末尾。
您可以使用 "editor.emmet.action.evaluateMathExpression"
代替 incrementNumberByOne
命令来进行更复杂的数学运算。
要将行号加 10,请使用
"console.log('Line #${TM_LINE_NUMBER}+11"
在代码段中,"editor.emmet.action.evaluateMathExpression"
代替多命令宏中的 "editor.emmet.action.incrementNumberByOne"
。