这有点棘手,但请测试一下。你需要像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)/"
},
在您的 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"
]
},
这个resourceExtname =~ /\\.(js$|php)/ 将键绑定限制为.js 和.php 文件(而不是.json 文件)。如果您希望键绑定应用于更多文件类型,您可以更改它。
Ctrl+/ 在列位置 0 和 Ctrl+Shift+Ctrl 删除注释字符。
您可以将这些键更改为任何您想要的。请注意,它不是(目前也不能)使用 Ctrl+/ 的简单切换 - 使用键绑定无法检测评论是否已经存在。你需要一个扩展来获得这种功能。
此方法的一个缺点是,如果您选择多行并对其进行注释,您将失去多行选择(如演示中所示)。