javascript VS Code中类似jsdoc的多行星号注解

oxf4rvwz  于 2023-06-04  发布在  Java
关注(0)|答案(7)|浏览(359)

我想用这种风格注解掉我的代码

/**
 * This is
 * A multiline comment
 */

有没有可能抄近路?
编辑1:
https://github.com/Microsoft/vscode/issues/50301解决此问题,但它不适用于快捷方式。我希望能够选择一个代码块,并在上面的样式注解出来

bkhjykvo

bkhjykvo1#

如何在VS Code中注解掉多行/单行:

  • macOS:

Shift + Option + A

  • Windows和Linux核心:

Shift + Alt + A
如何重新Map/更改这些快捷方式?
Windows:文件>首选项>键盘快捷键。
MacOS:代码>首选项>键盘快捷键。
您可以通过键绑定(键名称)和命令名称搜索列表。

oxalkeyp

oxalkeyp2#

快捷键是Shift + Alt + A(Windows),Shift + Option + A(Mac)

oymdgrw7

oymdgrw73#

我在VS Code中使用了这种类型的注解,但我不认为这有一个快捷方式。我通常通过键入/**来执行此操作
然后JSDoc注解被切换,您可以使用它。

/**
 * This is
 * A multiline comment
 */

更多:click here

rlcwz9us

rlcwz9us4#

快捷键是shift + alt + A。

vybvopom

vybvopom5#

这不是一个真实的的解决方案,但您可以使用Shift + Option/Alt + A创建/* ... */样式的注解,然后使用垂直光标select在每行的开头插入一个空格和星号。

u4dcyp6a

u4dcyp6a6#

首先选择批量行列表,然后点击下面的按键。您可以通过执行相同的操作来反转该操作。

Windows: Ctrl + /

Mac: Command + /
tpxzln5u

tpxzln5u7#

我做了一个键绑定,使这些星级的评论风格从一个选择。你需要一个扩展(我写的,完全公开)-Find and Transform-因为它允许你在replace中使用javascript和/或vscode扩展API。
在你的keybindings.json中进行keybinidng:

{
  "key": "alt+c",                          // whatever keybinding you want
  "command": "findInCurrentFile",
  "args": {
    "description": "toggle starred block comments in selections",
    "preCommands": "expandLineSelection",
    
    "replace": [
      "$${",
        "const startRegex = /^\\s*\\/\\*\\*\\s*/m;",  // for /** start to block
        // "const startRegex = /^\\s*\\/\\*\\s*/m;",  // for /*  start to block
        "const endRegex   = /^\\s*\\*\\/\\s*?$/m;",
        
        "let lines = `${selectedText}`.split('\\n');",
        "if (lines.at(-1) === '') lines.splice(-1,1);",
        
        "const isReversed = vscode.window.activeTextEditor.selection.isReversed;",
        // isReversed =  bottom-up selection
        
        "let firstLineNumber = vscode.window.activeTextEditor.selection.active.line;",        
        "if (!isReversed) firstLineNumber = vscode.window.activeTextEditor.selection.anchor.line;",
        
        // get entire line of text - to far left
        "const firstLine = document.lineAt(firstLineNumber).text;",
        
        "const regex = /\\s*/g;",
        "const leadingSpaces = firstLine.match(regex)[0];",
        
        "if ( startRegex.test(lines[0]) && endRegex.test(lines.at(-1)) ) {",          // so have an entire block comment
          "lines.shift();",                                                           // remove first '/*'  or '/*' line
          "lines.splice(-1,1);",                                                      // remove last  ' */' line
          "return lines.flatMap(line => `${line.replace(' * ', '')}`).join('\\n') + `\\n`;",  // remove ' * ' from each line start
        "}",
        
        "else {",
          "let str = leadingSpaces + `/** \\n`;",        // for /** start to block
          // "let str = leadingSpaces + `/* \\n`;",      // for /* start to block
          
          "str += lines.flatMap(line => leadingSpaces + ` * ` + line.substring(leadingSpaces.length)).join('\\n');",
          "str += `\\n`;",
          "return str + leadingSpaces + ` */` + `\\n`;",
        "}",
          
      "}$$"
    ],
    "restrictFind": "selections",       // need this since there is no find
    "postCommands": "cancelSelection"
  }
  // can use "when" clauses to restrict to certain languages
},

它是冗长的,因为它作为一个切换操作-添加或删除类似jsdoc的注解。您可以同时切换多个选择。
它使用每个选定内容中第一行的缩进。你只需要选择开始行的某个地方到结束行的某个地方-请参阅演示。
演示显示了/*起始块字符,但请参阅代码注解以更改为使用/**

如果你发现任何问题请告诉我。

相关问题