没有扩展名的文件的Visual Studio Code多行注释

时间:2019-11-09 18:39:42

标签: visual-studio-code comments

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

2 个答案:

答案 0 :(得分:1)

最后找到了一些可行的解决方案...没有扩展名,等等...

只需按住(mac)Option + Cmd(同时在第1列中),然后单击向下箭头以多光标选择所有行,然后只需键入#将其放在col.1中,其余将移至1列右...您可以再次执行此操作,例如添加另一个#。

此外,另一种选择是: -转到“选择”>“ ColumnSelectionMode”(进入列模式),然后向下拖动,执行“多选”! ..然后输入#以注释行,例如!!

答案 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 + / < / kbd>删除评论。我认为没有一种方法可以使它成为一个命令切换。


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

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

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


您可以使用"when": "editorTextFocus && editorLangId == plaintext",只要没有扩展名的文件保留为plaintext langId文件,它就可以工作。它不像我上面使用的when子句那么具体。