コメントにする・戻す
行をコメントにする操作は、Vimでは長らくプラグインの仕事でした。Neovim 0.10からは標準機能として入っているので、何も入れずに gcc が使えます。ここから先の3レッスンは、Vimには無い・あるいはVimと意味の違うNeovimの既定を扱います。
Vimではプラグインが要る
この gcc はNeovim 0.10から入った標準機能です。Vimには同じものが無いので、vim-commentary や tcomment のようなプラグインを入れてキーを合わせることになります。設定を持ち歩かない環境や、他人のマシンを借りたときに差が出るところです。
この練習ページでもVim側の設定では受け付けません。第7章までの問題で gcc を押しても何も起きないのはそのためです。
印の形はファイルの種類で決まる
どんな文字でコメントにするかは commentstring というオプションが持っています。JavaScriptなら // %s、Luaなら -- %s、シェルなら # %s のように、ファイルの種類ごとに設定されています。この練習ではJavaScript相当の // %s で固定しています。
付ける位置は、範囲の中でいちばん浅い字下げに揃います。行ごとの字下げに合わせて入れるのではないので、深さの違う行が混ざっていても印の列が揃います。
付けるか外すかは範囲全体で決まる
範囲の全部が既にコメントのときだけ「外す」になり、素の行が1行でも混じっていれば「付ける」に倒れます。コメント済みの行にもう一段 // が乗るのはこのためで、間違いではありません。もう一度同じ範囲に gc を打てば元に戻ります。
gc はオペレータとして使える
gcc は1行ですが、gc はオペレータなので後ろにモーションを取れます。gc3j でカーソル行から3行下まで、gcap で段落全体をコメントにできます。d や y と同じ組み立て方です。
ビジュアルモードで範囲を選んでから gc を押す形も使えます。この練習ページでは行単位の範囲だけを受け付けていて、文字単位の選択は扱っていません。ブロックコメントが必要になる形なので、本物のNeovimに任せています。
commentstring を自分で決める
ファイルタイプの判定が効かない拡張子や、独自の設定ファイルを扱うときは、commentstring を自分で設定します。:setlocal commentstring=#\ %s のように書くと、そのバッファだけで # がコメント記号になります。
%s がコメントにしたい本文の位置を表します。前後を囲む形式なら <!--\ %s\ --> のように両側に書きます。値は :set commentstring? で確認できます。
Vimで同じ操作をそろえる
VimとNeovimを行き来する場合は、Vim側に vim-commentary を入れるとキーが揃います。このプラグインの gcc と gc がNeovimの標準機能の元になっているので、押し方も結果もほぼ同じになります。
プラグインを入れられない環境では、:s で行頭にコメント記号を足す方法があります。:'<,'>s/^/\/\// で付け、:'<,'>s/^\/\/// で外します。打つ量は増えますが、素のVimだけで完結します。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| gcc | この行のコメントを切り替え |
| gc | 動いた範囲のコメントを切り替え |