我在 VScode 中有一个多行代码段。问题是,TM_LINE_NUMBER 给出了触发片段的行号,我需要将该数字增加 1,使其等于它实际所在的行号。
"Console_Log_Test": {
"prefix": "clg",
"body": [
"//Debugging (remove)",
"console.log('Line #${TM_LINE_NUMBER}');"
]
},
我怎样才能做到这一点?
我在 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"
}
}
]
},
将工作!!行号将增加一,然后');\n
将添加到该行的末尾。
您可以使用"editor.emmet.action.evaluateMathExpression"
代替incrementNumberByOne
命令进行更高级的数学运算。
要将 10 添加到行号,请使用
"console.log('Line #${TM_LINE_NUMBER}+11"
在代码段中并"editor.emmet.action.evaluateMathExpression"
代替"editor.emmet.action.incrementNumberByOne"
多命令宏中。