Visual studio code 是否可以在行尾创建一个VS代码键盘快捷键用于注释?

Visual studio code 是否可以在行尾创建一个VS代码键盘快捷键用于注释?,visual-studio-code,comments,vscode-snippets,Visual Studio Code,Comments,Vscode Snippets,有没有一种方法可以在VS代码中创建一个键盘快捷键,我可以在代码行的末尾开始注释(如果适用,创建开始和结束注释括号)像这样: <h3>Example</h3> <div class="keyboard-shortcut"></div> <!-- comment here --> <h3>Example</h3> 示例 例子 我知道使用Ctrl+/或Ctrl+K Ctrl+C(我使用的是Ubuntu Linux)

有没有一种方法可以在VS代码中创建一个键盘快捷键,我可以在代码行的末尾开始注释(如果适用,创建开始和结束注释括号)像这样:

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

      // "snippet": "  $LINE_COMMENT $1 "
  }
},
有两个版本的代码段变量可用于此操作:
$BLOCK\u COMMENT\u START
$LINE\u COMMENT
。您可能更喜欢其中一种,但
$BLOCK\u COMMENT\u START
似乎适用于更多的语言,如html,其中
$LINE\u COMMENT
版本在行尾触发时不会执行任何操作

您可以制作此代码段的两个版本:一个版本使用
$BLOCK\u COMMENT\u START
语言,另一个版本使用
$LINE\u 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)/"
}
和上面关于注释形式的注释相同:块注释或行注释。您可以创建名为稍微不同的宏的副本,然后创建另一个keybinding(使用相同的触发器),但使用不同语言的
when
子句来触发使用行注释的另一个宏

我将在这里显示其他表单(但如果您可以使用块注释表单,那么您可能不需要它们,在这种情况下,只需删除上面第一个
when
子句末尾的
&&resourceExtname=~/\\(html | scss | css)/

如果这一切都不清楚,让我知道。下面是使用两种注释形式在不同文件上的演示(如所示,如果您使用多行选择触发宏,则注释将仅使用光标添加到行的末尾-尽管可能会对其进行修改,以便在所有选定行的末尾添加注释):


这是否回答了您的问题@Addison这没有多大帮助,不。我想知道VS代码中是否存在此功能。有没有其他人找到了一种方法来实现这一点,而不只是在一行代码的末尾键入注释语法?这可能是可以做到的,但您必须制作一个代码段或宏(当您触发行尾注释功能时,您是否总是在行尾,或者在该行的任何位置—如果在任何位置,您肯定需要@Addison建议的宏)。是否要查看宏?您似乎拒绝了该方法。@标记在触发此操作之前,我认为光标将位于行的末尾。代码段的想法听起来不错。如果我正确理解此方法,我需要为我想要此功能的每种语言创建代码段。但是我想看看宏,是的。我觉得你之前的答案没有回答我的具体问题。我的问题不是重复的。我是问VS代码是否具有完成此任务的功能。它似乎没有。我想了解更多有关宏的信息。答案已被接受。我刚刚接受也学会了如何做到这一点。(这是我关于堆栈溢出的第一个问题)。我对编程还是新手。我可以看到这种方法如何使VS代码更加个性化-用于此任务和其他任务。你给了我很多东西可以在这里尝试。我感谢你在这方面的慷慨。你已经超出了我的期望。再次感谢。很高兴能提供帮助。
{
  "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)/"
}