見出し画像

Vim で複数行コメントアウト

最近「へー」って思ったこと。

Vim の矩形くけいヴィジュアルモードには Crtl+Q でも行ける

Windows のターミナルアプリで CTRL+V をペーストにしてるので、Vim での CTRL+V アクション(これが通常、ノーマルモードから矩形ヴィジュアルモードに入るアクション)は諦めてた。
そもそもそんなに使わないし、と。

でも、複数行をまとめてコメントアウトしたりするときに矩形ヴィジュアルモードは異常なほど直感的で便利である。

というわけでちょっと調べてみたら、さすが Vim、なんににでも別の選択肢(CTRL-V-alternative)が用意されている。

CTRL+V の代わりに Crtl+Q が使えるようになってる。デフォで。

参考 :

visual - Vim日本語ドキュメント https://vim-jp.org/vimdoc-ja/visual.html

[count]CTRL-V 矩形ビジュアルモードを開始する。Note: Windowsでは
CTRL-Vはテキストの貼り付けにマップされることがあり、そ
の際にはビジュアルモードを開始できない。
CTRL-V-alternativeを参照。
[count] を指定した場合は、上記の v と同様。

Vim日本語ドキュメント
CTRL-V-alternative https://vim-jp.org/vimdoc-ja/gui_w32.html#CTRL-V-alternative


Leader キー + Ex コマンドでコメントアウト

上に書いた矩形編集だけが複数行コメントアウトを実現する方法ではない。

むしろ僕の場合、Windows のターミナルアプリで CTRL+V をペーストにしてるという背景もあって、(手数は多くなるけど) Ex コマンドで編集することのほうが個人的スタンダードになっている。

つまり、

  1. ノーマルモードの状態で

  2. SHIFT+V を使ってコメントアウトしたい行を選択し(もちろん複数行にまたがって良い)

  3. : (コロン)を押して Ex モードに入り

  4. 例えば `s;^;// ;` のように入力して Enter を押して実行(シェルや Python などのスクリプトなら `s;^;# ;`)

こうして書き出すと面倒そうだが、最後の2つのステップ(Ex モードに入って → 置換実行)は決まりきった内容なのでオートメーション化できる。

オートメーション化のやり方はなん通りもあるだろうけど、僕の場合は「Leader キー + なにかのキー」の形に圧縮している。

自分の ~/.vimrc から引用すると、

" 参考: http://postd.cc/how-to-boost-your-vim-productivity/ "
" ユーザ定義用にあらかじめ用意されている Leader キーを <Space> に設定する "
" (一般的には「,」にすることが多いらしい) "
let mapleader = "\<Space>"

まずこのようにしてLeader キーをどのキーにするかを決めていて、その上で、

" ヴィジュアルモードで行選択したあと、そのブロックをコメントアウト "

"" // でコメントアウト ""
xnoremap <Leader>/ :s;^;// ;<CR>

"" # でコメントアウト ""
xnoremap <Leader>3 :s;^;# ;<CR>

このようにショートカットを割り振っている。

このような設定にしておけば、先の手順は次のように簡略化できる。

  1. ノーマルモードの状態で

  2. SHIFT+V を使ってコメントアウトしたい行を選択し(もちろん複数行にまたがって良い) ※ここまでは同じ

  3. SPACE キーを押してから、/ (スラッシュ)を押すと選択肢たブロックがコメントアウトされる(シェルや Python などのスクリプトなら 3 (SHIFT+3 で `#` なので)

今日の日記を書くのに参考にした note のヘルプページ

SN

この記事が気に入ったらサポートをしてみませんか?