可以在行尾创建一个 VS Code 键盘快捷键用于评论吗?

Possible to create a VS Code Keyboard Shortcut for Comment at End of Line?

有没有办法在 VS Code 中创建键盘快捷键,以便我可以在代码行末尾开始注释(如果适用,创建开始和结束注释括号)? - 就像这样:

<h3>Example</h3>
<div class="keyboard-shortcut"></div> <!-- comment here -->
<h3>Example</h3>

我知道使用 Ctrl+/ 或 Ctrl+K Ctrl+C(我正在使用 Ubuntu Linux)- 以便像这样注释掉整行或选择:

<h3>Example</h3>
<!--  <div class="keyboard-shortcut"></div> -->
<h3>End of Line</h3>

此处使用了一个 HTML 示例,但我想使用键盘快捷键在任何常用编程语言的行尾开始注释 - 就像我在空白处开始注释一样线.

我知道如何创建自定义键映射。我想知道上述操作是否可行 - 或者是否存在用于完成此任务的扩展。

或者是否必须创建自己的扩展才能实现这一目标?

要将此作为一个简单的片段来执行,您的光标必须已经位于行尾:

{
  "key": "alt+-",                                // choose your own keybinding

    "command": "editor.action.insertSnippet",

    // delete next line if using block comment form for all filetypes
    "when": "editorTextFocus && !editorReadonly && resourceExtname =~ /\.(html|scss|css)/"

    "args": {
      "snippet": "  $BLOCK_COMMENT_START  $BLOCK_COMMENT_END"

      // "snippet": "  $LINE_COMMENT  "
  }
},

有两个版本的片段变量可用于此:$BLOCK_COMMENT_START$LINE_COMMENT。您可能更喜欢其中一种,但 $BLOCK_COMMENT_START 似乎适用于更多语言,例如 html,其中 $LINE_COMMENT 版本在行尾触发时不执行任何操作。

您可以制作此代码段的两个版本:一个使用 $BLOCK_COMMENT_START 语言,另一个使用 $LINE_COMMENT 语言,只需修改 resourceExtname 子句即可,如上所示。


或者,要获得更多功能,您可以创建一个宏。然后,您可以从行中的任何位置触发 EOL 注释。使用 the multi-command extension,将其放入您的 settings.json:

"multiCommand.commands": [

  {
    "command": "multiCommand.insertBlockCommentEOL",
    "sequence": [
      "cursorLineEnd",
      {
        "command": "editor.action.insertSnippet",
        "args": {
          "snippet": "  $BLOCK_COMMENT_START  $BLOCK_COMMENT_END"
        }
      }
    ]
  }
],

然后是一些键绑定:

{
  "key": "alt+-",
  "command": "multiCommand.insertBlockCommentEOL",

  // remove below if using block comment form for all languages
  "when": "editorTextFocus && !editorReadonly && resourceExtname =~ /\.(html|scss|css)/"
}

评论形式同上:块评论或行评论。您可以制作一个名称略有不同的宏的副本,然后制作另一个键绑定(使用相同的触发器),但对不同的语言使用不同的 when 子句,这将触发另一个使用行注释的宏。

我会在这里展示其他形式(但如果您可以使用块注释形式,您可能不需要它们,在这种情况下,只需删除第一个 [=] 末尾的 && resourceExtname =~ /\.(html|scss|css)/ 22=] 上面的子句)。

{
  "command": "multiCommand.insertLineCommentEOL",
  "sequence": [
    "cursorLineEnd",
    {
      "command": "editor.action.insertSnippet",
      "args": {
        "snippet": "  $LINE_COMMENT "
      }
    }
  ]
}

{
  "key": "alt+-",
  "command": "multiCommand.insertLineCommentEOL",
  "when": "editorTextFocus && !editorReadonly && resourceExtname =~ /\.(js|ts|php)/"
}

如果这一切都不清楚,请告诉我。这是一个使用两种注释形式的不同文件的演示(如所演示的,如果您使用多行选择触发宏,则注释将仅使用光标添加到行的末尾 - 尽管它可能被修改为在所有选定行的末尾添加注释):