Visual Studio Code多行注释,不带扩展名的文件

问题描述 投票:0回答:1

我正在编辑没有扩展名的文件(例如...或具有未知扩展名的文件等),当我尝试使用Cmd + /多行注释时,它什么也没做。我可以将扩展名更改为.py或.yaml,以获取我要查找的#注释功能,但这很麻烦。有没有办法告诉代码“就像文件上的.py扩展名一样”类型的东西?...或者用CarriageReturn + LineFeed加上#加上空格替换CarriageReturn + LineFeed ...或强制Cmd + /起作用?

visual-studio-code comments
1个回答
0
投票

我有些惊讶,但这似乎可行-进行测试。您将需要某种宏扩展。在这里,我正在使用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 =~ /^(?!.*\\.)/" 
}

这里是一个演示:

demo of commenting a file with no extension


此方法有一些局限性,而不是全面的扩展。

  1. 最后一个光标位置将不被记住。

  2. 空行将被注释-如您在演示中所见。

  3. 当注释不同缩进的行时,注释#将不会对齐。

  4. 您必须使用一个键绑定Cmd + /来添加注释,而使用另一个键Shift + /来删除注释。我认为没有一种方法可以使它成为一个命令切换。


答案的真正有趣的部分无扩展名的文件的定位方式。在按键绑定中,有when子句包含resourceFilename =~ /^(?!.*\\.)/

When子句可以使用正则表达式来应用于某些标识符,例如resourceFilename。参见when clause operators。正则表达式/^(?!.*\\.)/表示在文件名不包含文字.时应用此键绑定。它使用否定的前瞻,断言任何字符后都没有.

我不确定这是否可行,但似乎可行。 Cmd + /命令仍然可以与其他文件类型一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.