NERD Commenterの説明

この記事は勝手にVim記事を書き続けるの1日目(2010/12/26)です。
adventしたかったけれどもうクリスマス後なので。。

Vimのadventは無いのかとつぶやいたところ
じゃあやれよとつぶやきをいただいたので勝手に始めてみます。


ということですがたいした使い方はしていないので
プラグインの説明でお茶を濁します。
NERD Commenterです。
"The NERD Commenter"
http://www.vim.org/scripts/script.php?script_id=1218
コメントアウトするときに便利なんですが
オプションにたくさん種類があってどう使って良いのかわからなくなるのがこのプラグイン。
自分が使っているモノを紹介します。


まず基本設定の部分。

" Nerd_Commenter の基本設定
let g:NERDCreateDefaultMappings = 0
let NERDSpaceDelims = 1

上の方でデフォルトのキーマッピングをオフにして好きなキーマッピングに変えています。
理由は後々・・・。
また下の方ではコメントアウトした際のスペース数を1に設定しています。
たとえばこの場合1なので「" 」と自動的にはいるわけですね。


では実際に設定している部分です。

nmap <Leader>/ <Plug>NERDCommenterToggle
vmap <Leader>/ <Plug>NERDCommenterToggle

行を対象にコメントアウトを行います。
「コメントアウトする」と「コメントアウトを解除する」は
それぞれ別のキーマップがデフォルトでは割り当てられているのですが、
それぞれ別にマッピングするくらいなら
アウトされているなら解除・されていないならアウトされた方が素敵ですよね?
ということでNERDCommenterToggleを使っています。
デフォルトだとccが「コメントをつける」に振られていて
個人的にしっくり来なかったので、
最初の設定でデフォルトのキーマッピングを解除して/に割り当てています。
nmapとvmapについて書いているのでノーマルモードとヴィジュアルモードで有効です。

nmap <Leader>/a <Plug>NERDCommenterAppend

これはコメントアウトしてすぐそのコメントを入力するものです。
「" 」と入力されてインサートモードになります。
コメントアウトは行末に作られますから便利ですね。

nmap <leader>/9 <Plug>NERDCommenterToEOL

こっちはカーソルのあるところから行末までをコメントアウトします。
javaなら/* */ と行内で囲まれます。

vmap <Leader>/s <Plug>NERDCommenterSexy

sexyなコメントです・・・ってなに?という感じですが
scalajavaなどで複数行コメントする場合に
行選択しておいて/sすることで

//
//
//

と単数行コメントアウトにならずに

/*
 *
 */

と複数行コメントアウトを入れてくれます。
解除するときはNERDCommenterToggleで解除できるので
ここの例なら上でマップした/で解除できます。
素敵ですね?

vmap <Leader>/b <Plug>NERDCommenterMinimal

こちらは複数行のコメントアウトを各行ではなくブロック全体にかけてくれます。

/*
hogehoge
 */

のパターンですね。
ファイルタイプによってこれが不可能なときは各行にコメントアウトが入ります。


このくらいでしょうか。
ちなみには半角スペース派なので、
実際には「/」などのように入力しています。
普段はこれしか使いませんね :)
他にもコメントアウトの種類がありますし、
使いやすいキーマッピングもあるでしょうからまだまだ研究します〜。