VS Code: ярлык для выбора или удаления блочного комментария без выделенного текста - PullRequest
0 голосов
/ 23 апреля 2020

Я знаю, что есть ярлык для комментария и блока кода комментария ( SHIFT + ALT + A ), но есть ли способ быстрого выбора ( или даже удалить без выбора) заблокировать комментарий, не используя мышь или клавиатуру, чтобы выбрать и нажать кнопку удаления / возврата? Например:

/* 
This is a large block of code with at least 50 lines of code!
   :
   :
*/

Есть ли комбинация клавиш, где я могу поместить курсор в любом месте комментария блока и удалить его всего несколькими нажатиями клавиш? Спасибо!

1 Ответ

1 голос
/ 24 апреля 2020

Вы можете установить макрос, чтобы сделать это довольно легко.

Во-первых, используйте превосходное расширение Select By (@ rioV8), чтобы выбрать текст между и включая маркеры комментария блока /* и */. Установите его в свои настройки:

"selectby.regexes": {

  "BlockCommentSelect": {
    "backward": "\/\\*",
    "forward": "\\*\/",
    "forwardInclude": true,
    "backwardInclude": true,
    "showSelection": true
  }
},

Вы можете использовать это с привязкой клавиш, например:

{
  "key": "alt+s",           // whatever keybinding you wish
  "command": "selectby.regex",
  "args": ["BlockCommentSelect"],
  "when": "editorTextFocus"
},

Вы можете остановиться здесь и использовать связывание клавиш, чтобы выделить текст, а затем Shift + Alt + A , чтобы отключить комментарий блока.

Или вы можете добавить selectby.regex1 в макрос и сделать его выделением и переключиться в один шаг. Здесь с помощью расширения макроса multi-command установите это в своих настройках, а также вышеупомянутую настройку selectby.regexes:

"multiCommand.commands": [

 {
  "command": "multiCommand.BlockCommentOff",
  "sequence": [
    { 
      "command": "selectby.regex",
      "args": ["BlockCommentSelect"] 
    },
    "editor.action.blockComment"
  ]
},
]

и затем связывание клавиш для запуска этого макроса (в ваших сочетаниях клавиш) . json):

{
  "key": "shift+alt+A",    // trigger the macro with whatever keybinding if you wish
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.BlockCommentOff" },
  "when": "editorTextFocus && !editorHasSelection"
},

Здесь я использовал Shift + Alt + A для запуска макроса. И я использовал when предложение !editorHasSelection, потому что, если у вас есть выделение, возможно, вы захотите заблокировать комментарий только в этом выделении (внутри другого комментария блока !!).

Демонстрации: (1) Просто первый метод где selectby выделяет ваш текст, и вы вручную отключаете его, а затем (2) используете версию макроса, чтобы сделать это за один шаг.

block toggle from within the block

...