我正在编辑没有扩展名的文件(例如...或具有未知扩展名的文件等),当我尝试使用Cmd + /多行注释时,它什么也没做。我可以将扩展名更改为.py或.yaml,以获取我要查找的#注释功能,但这很麻烦。有没有办法告诉代码“就像文件上的.py扩展名一样”类型的东西?...或者用CarriageReturn + LineFeed加上#加上空格替换CarriageReturn + LineFeed ...或强制Cmd + /起作用?
我有些惊讶,但这似乎可行-进行测试。您将需要某种宏扩展。在这里,我正在使用multi-command extension。
在您的settings.json中:
"multiCommand.commands": [
{
"command": "multiCommand.addCommentNoExtension",
"sequence": [
"editor.action.insertCursorAtEndOfEachLineSelected",
"cursorHome",
{
"command": "type",
"args": {
"text": "# "
}
},
"removeSecondaryCursors"
]
},
{
"command": "multiCommand.removeCommentNoExtension",
"sequence": [
"editor.action.insertCursorAtEndOfEachLineSelected",
"cursorHome",
"deleteRight",
"deleteRight",
"removeSecondaryCursors"
]
}
]
在您的keybindings.json中,将这些键绑定:
{
"key": "cmd+/",
"command": "multiCommand.addCommentNoExtension",
"when": "editorTextFocus && resourceFilename =~ /^(?!.*\\.)/"
},
{
"key": "shift+/",
"command": "multiCommand.removeCommentNoExtension",
"when": "editorTextFocus && resourceFilename =~ /^(?!.*\\.)/"
}
这里是一个演示:
此方法有一些局限性,而不是全面的扩展。
最后一个光标位置将不被记住。
空行将被注释-如您在演示中所见。
当注释不同缩进的行时,注释#
将不会对齐。
您必须使用一个键绑定Cmd + /来添加注释,而使用另一个键Shift + /来删除注释。我认为没有一种方法可以使它成为一个命令切换。
答案的真正有趣的部分是无扩展名的文件的定位方式。在按键绑定中,有when子句包含resourceFilename =~ /^(?!.*\\.)/
。
When子句可以使用正则表达式来应用于某些标识符,例如resourceFilename
。参见when clause operators。正则表达式/^(?!.*\\.)/
表示在文件名不包含文字.
时应用此键绑定。它使用否定的前瞻,断言任何字符后都没有.
。
我不确定这是否可行,但似乎可行。 Cmd + /命令仍然可以与其他文件类型一起使用。