"コメントアウトして編集"を効率化する。

この記事は Vim Advent Calender 2012 の 315日目の記事です。

314日目は、@supermomonga さんの「Macを購入したら絶対に導入したい!私が3年間で厳選した超オススメアプリ10選!」でした。

私も Macを持ってますが、超オススメアプリはすべてインストールしました!!!
超オススメなので、みなさん導入しましょう!

さて、本日の記事はこちらになります。

概要

例えば、.vimrcにカラースキームの設定している。

colorscheme evening

あっ!でも、違う色に設定しようかな。
でも前の記述も残しておきたい。
ということで、以下のように書くとします。

" colorscheme evening
colorscheme ron

こういった場合に、ちょっと効率化しようというお話です。

コメントアウトの Vimプラグイン

コメントアウトする際に 言語に合わせてコメント文字を覚えてられないので、便利なプラグインがあります。以下のどれかをインストールしたら、「gcc」と入力してみると効果がわかると思います。
私は @tyruさんの Vimプラグインを入れています。

他にもこんなものがあります。

参考記事:

本題

やりたいことは簡潔です。
※わざわざキーに割り当てる必要がないかもしれません。

  1. 行をYank(コピー)する。
  2. 既存の記述はコメントアウト。
  3. Yankした行を貼り付ける
  4. 編集する。

この1~3までの動作を私は「Ctrl+Enter」に割り当ててます。

nmap <C-Enter> yy<Plug>(caw:i:comment)p
nmap <silent> <C-Enter> yy:<C-u>TComment<CR>p
nmap <C-Enter> yy<Plug>CommentaryLinep
" 関数は <Plug>CommentaryLine までです。*見づらい

というような設定をしておく、「Ctrl+Enter」で

" colorscheme evening
|colorscheme evening

※「|」カーソル位置(Normalモード)

このようになります。
こんな感じで、言語を気にせずコメント&行追加が可能で、
やりたいことが簡単に出来ました。

発展系!!!???

いやまだまだ!!!(書いてたらこんなのも出来るなと思った)
例えば、C++のコードで

 printf("Hello World\n");

コメントアウトして、printfの内容を変えたい場合

nmap <S-Enter> yy<Plug>(caw:i:comment)pf"di"i

ってやってると、「Shift+Enter」で以下のようになります。

 // printf("Hello World\n");
    printf("|");

※「|」カーソル位置(挿入モード)

これって、ちゃんと Vimプラグイン作ると嬉しい人いるのかな。
もうあったら教えてください。試してみたい。

おわり

っというような感じです。
もちろん、バージョン管理ツールに commitする時には、 あんまり残したりしないのですが、ちょっと変更して テストしてみたい時には 以前の記述を残す ことが多いので、 私は便利に使ってます。

次回は @manga_osyo さんです。

追記

記事投稿後に、Lingrにて「nerdcommenter」の存在を教えていただき、
プラグインの紹介部分に追記しています。