使 VSCode 的注释从列位置 0 开始

Gre*_*eso 8 comments keyboard-shortcuts visual-studio-code

在 VSCode 中,当我按下组合键ctrl+时/,VSCode 将对所选行进行注释,确保缩进完好无损。因此,如果一行代码从位置 16 开始,那么注释的双斜杠(即//)将位于位置 16,将代码向右移动一点。

我想设置它,以便当我按ctrl+时/,注释双斜杠//将始终从列位置 0 开始。这可能吗?

谢谢。

Mar*_*ark 3

这是后来更好的方法:/sf/answers/5061792921/


这有点棘手,但请测试一下。您需要像multi-command这样的宏扩展。

在你的 keybindings.json 中:

 {                   // disable ctrl+/ for js/php files only
   "key": "ctrl+/",
   "command": "-editor.action.commentLine",
   "when": "editorTextFocus && !editorReadonly && resourceExtname =~ /\\.(js$|php)/"
 },

{                   // call the macro multiCommand.insertCommentColumn0 when
                     // commenting a single line
  "key": "ctrl+/",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.insertCommentColumn0" },
  "when": "!editorHasSelection && editorTextFocus && !editorReadonly && resourceExtname =~ /\\.(js$|php)/" 
},      

{                    // call the macro multiCommand.AddCommentColumn0MultipleLines when
                     // commenting more than one line
  "key": "ctrl+/",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.AddCommentColumn0MultipleLines" },
  "when": "editorHasSelection && editorTextFocus && !editorReadonly && resourceExtname =~ /\\.(js$|php)/" 
},

 {                   // call the command editor.action.removeCommentLine when
                     // commenting a single or multiple line(s)
   "key": "ctrl+shift+/",
   "command": "editor.action.removeCommentLine",
   "when": "!editorHasSelection && editorTextFocus && !editorReadonly && resourceExtname =~ /\\.(js$|php)/"
 },
Run Code Online (Sandbox Code Playgroud)

在你的settings.json中,宏:

"multiCommand.commands": [

  {
    "command": "multiCommand.insertCommentColumn0",
    "sequence": [
      "cursorLineStart",
      {
        "command": "type",
        "args": {
          "text": "// "
        }
      },
    ]
  },
  {
    "command": "multiCommand.AddCommentColumn0MultipleLines",
    "sequence": [
      "editor.action.insertCursorAtEndOfEachLineSelected",        
      "cursorLineStart",
      {
        "command": "type",
        "args": {
          "text": "// "
        }
      },
      "removeSecondaryCursors"
    ]
  },
Run Code Online (Sandbox Code Playgroud)

resourceExtname =~ /\\.(js$|php)/将键绑定限制为.js.php文件(而不是.json文件)。如果您希望键绑定应用于更多文件类型,您可以更改它。

Ctrl+/在列位置 0 处应用注释字符,Ctrl++ShiftCtrl删除注释字符。

您可以将这些键更改为您想要的任何键。请注意,它不是(目前不能是)使用Ctrl+进行简单切换/- 带有键绑定,无法检测注释是否已存在。您需要一个扩展才能获得这种功能。

在零列插入注释的演示


此方法的一个缺点是,如果您选择多行并对其进行注释,您将丢失多行选择(如演示中所示)。