1

我在 VScode 中有一个多行代码段。问题是,TM_LINE_NUMBER 给出了触发片段的行号,我需要将该数字增加 1,使其等于它实际所在的行号。

"Console_Log_Test": {
  "prefix": "clg",
  "body": [
    "//Debugging (remove)",
    "console.log('Line #${TM_LINE_NUMBER}');"
  ]
},

我怎样才能做到这一点?

4

1 回答 1

4

至少有以下两种选择:

"Console_Log_Test": {
      "prefix": "clg",
      "body": [
          "//Debugging (remove)",
          "console.log('Line #${1:${TM_LINE_NUMBER}}');"
          // "console.log('Line #${TM_LINE_NUMBER}');"
      ]
}

至少选择了上面的行号,您可以轻松地自己更改它。

更有趣的是把它变成一个“”,它会完全实现你想要的。

  1. 您将需要类似multi-command extension的东西。

  2. 将上面的代码段更改为:

    "Console_Log_Test": {
    
      "prefix": "clg",
      "body": [
          "console.log('Line #${TM_LINE_NUMBER}');"
      ]
    }
    

所以现在该片段只打印其中包含的行TM_LINE_NUMBER

  1. 在您的用户设置中:

    "multiCommand.commands": [
    
    {
      "command": "multiCommand.lineNumber",
      "sequence": [
        {
          "command": "type",
          "args": {
            "text": "//Debugging (remove)\n"
          }
        },
        {
          "command": "editor.action.insertSnippet",
          "args": {
            // "langId": "csharp",
            "name": "Console_Log_Test"
          }
        }
      ]
    }
    

现在该片段实际上是在您想要的行号上触发的。

  1. 在您的 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"多命令宏中。

于 2018-11-15T17:18:42.413 回答