【问题标题】:How to increment a variable, like the line number, in a vscode snippet如何在 vscode 片段中增加变量,如行号
【发布时间】:2018-11-14 17:15:41
【问题描述】:

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

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

我该怎么做?

【问题讨论】:

    标签: visual-studio-code vscode-snippets


    【解决方案1】:

    至少有这两个选项:

    "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. 将上面的sn-p改成:

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

    所以现在 sn-p 只打印包含 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"
            }
          }
        ]
      }
      

    现在 sn-p 实际上是在您想要的行号上触发的。

    1. 在您的 keybindings.json 中:

      {
        "key": "ctrl+alt+l",
        "command": "extension.multiCommand.execute",
        "args": { "command": "multiCommand.lineNumber" }
      },
      

    现在 Ctrl-Alt-L 正是您想做的事情。设置起来有点麻烦,但学习的方法非常强大。

    [编辑]

    我想知道是否有办法让一些 emmet 数学起作用,而且令人惊讶的是,确实如此。

    使用这个sn-p:

     "log line number on second line": {
          "prefix": "clg",
          "body": [
              "//Debugging (remove)",
              "console.log('Line #${TM_LINE_NUMBER}"
          ]
      },
    

    那个sn-p除了最后的');之外什么都有了

    现在这个宏:

    {
        "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"
    

    在 sn-p 和 "editor.emmet.action.evaluateMathExpression" 中代替多命令宏中的 "editor.emmet.action.incrementNumberByOne"

    【讨论】:

      猜你喜欢
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 2021-04-01
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多