VSCodeでコメントアウトと同時に次の行へ移動する


VSCodeで CMD+/ でコメントアウトしたら次の行へ移動してほしかった。が単純な設定平行ではできなかったので拡張機能で対処するよ。

コメントアウトと同時に次の行へ

普段はIntelliJとかAndroid Studioも使うのだが、コメント時の挙動がVSCodeだけ違ってるのでちょっと気持ち悪かった。どう違うかというと、CMD+/でコメントアウト(トグル)するのは同じなのだが、その後自動的に下の行へカーソルを移動してくれるのがIntelliJ/Android Studio。一方VSCodeはカーソルが移動しないので、連続で何行もコメントアウトする時にCMD+/の連打で済まないんだよね。個人的には地味に不便だと感じていたので、設定変更でコメントと同時にカーソル移動させるようにする。

調べたところ普通に設定変更で変えれる内容ではないみたい。しょうがないので、拡張機能を使って対処することにした。使用する拡張機能はmacrosというもので、これは指定したショートカットキーに複数コマンドを割り当てられるようにするものだ。こいつを普通にインストールする。

macros

拡張機能の詳細ページにはcommentDownというサンプルが載っているが、これは現在行をすぐ下に複製するんだけど、元の行はコメントにするというコマンド。こういうのをショートカットキーひとつで呼び出せるようにする拡張機能というわけだ。

ではこれを使って目的を達成しよう。

まずはsettings.jsonに次の内容を追加する。

📄settings.json
"macros": {
    "commentLineAndNext": [
        "editor.action.commentLine",
        "cursorDown",
    ],
},

commentLineAndNextというのはこのコマンドの名前。今回はこういう名前にしてみた。

“editor.action.commentLine”というのはVSCodeの既定コマンドで、現在行のコメントをトグルするアクション。で、その次に”cursorDown”するというわけだ。

続いてこのcommentLineAndNextをショートカットキーに割り当てる。keybindings.jsonを開こう。CMD+SHIFT+Pで「基本設定: キーボード ショートカットを開く(JSON)」を選ぶのが手っ取り早い。

📄keybindings.json
{
    "key": "cmd+/",
    "command": "macros.commentLineAndNext",
    "when": "isMac && textEditorFocus"
},
{
    "key": "ctrl+/",
    "command": "macros.commentLineAndNext",
    "when": "!isMac && textEditorFocus"
},

Macの場合はCMD+/、その他はCTRL+/に割り当ててみた。これはwhenのisMacで判定している。呼び出すコマンドは先程のcommentLineAndNextである。入力して保存したら試しにショートカットキーを押してみよう。ちゃんと動くかな?

なお、Vimmerの場合はtextEditorFocusじゃなくvim.mode == ‘Normal’とかでもいいかもしれない。

関連する記事


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください