0

有没有办法在 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 示例,但我想使用键盘快捷键在任何常见编程语言的行尾开始注释 - 就像我在空白行开始注释一样。

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

还是必须创建自己的扩展来实现这一目标?

4

1 回答 1

0

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

{
  "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 $1 $BLOCK_COMMENT_END"

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

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

您可以制作此代码段的两个版本:一个带有$BLOCK_COMMENT_START语言版本,而$LINE_COMMENT仅通过修改resourceExtname如上所示的子句用于语言版本。


或者,要获得更多功能,您可以制作一个宏。然后,您可以从行中的任何位置触发 EOL 注释。使用多命令扩展,把它放在你的 settings.json 中:

"multiCommand.commands": [

  {
    "command": "multiCommand.insertBlockCommentEOL",
    "sequence": [
      "cursorLineEnd",
      {
        "command": "editor.action.insertSnippet",
        "args": {
          "snippet": "  $BLOCK_COMMENT_START $1 $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)/的末尾删除)。when

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

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

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

EOL 评论演示

于 2019-12-30T17:08:33.487 回答