"コメントアウトして編集"を効率化する。
この記事は Vim Advent Calender 2012 の 315日目の記事です。
314日目は、@supermomonga さんの「Macを購入したら絶対に導入したい!私が3年間で厳選した超オススメアプリ10選!」でした。
私も Macを持ってますが、超オススメアプリはすべてインストールしました!!!
超オススメなので、みなさん導入しましょう!
さて、本日の記事はこちらになります。
概要
例えば、.vimrcにカラースキームの設定している。
colorscheme evening
あっ!でも、違う色に設定しようかな。
でも前の記述も残しておきたい。
ということで、以下のように書くとします。
" colorscheme evening colorscheme ron
こういった場合に、ちょっと効率化しようというお話です。
コメントアウトの Vimプラグイン
コメントアウトする際に 言語に合わせてコメント文字を覚えてられないので、便利なプラグインがあります。以下のどれかをインストールしたら、「gcc」と入力してみると効果がわかると思います。
私は @tyruさんの Vimプラグインを入れています。
他にもこんなものがあります。
参考記事:
- Vim で言語に関係なくコメントアウト行う - C++でゲームプログラミング
- tcomment.vim拡張してコメントアウトの効率あげる話 - Qiita
- NERD Commenterの説明 - あじーん-0.0.2-SNAPSHOT
本題
やりたいことは簡潔です。
※わざわざキーに割り当てる必要がないかもしれません。
- 行をYank(コピー)する。
- 既存の記述はコメントアウト。
- Yankした行を貼り付ける
- 編集する。
この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」の存在を教えていただき、
プラグインの紹介部分に追記しています。