Vimで開発するならこれだけはやっとけ
開発効率を上げるためのプラグインや機能のご紹介。
■neocomplcache
http://github.com/Shougo/neocomplcache
自動で補完候補をポップアップしてくれるプラグインで、Vimで効率的な開発をしようと思うのであれば必須のプラグインです。vimrcに以下の1行を加えればプラグインが有効になります。
let g:neocomplcache_enable_at_startup = 1
有効にした上で適当にファイルを編集すれば自動で補完候補が出てきます。候補を選ぶ時はCtrl+Nで次の候補、Ctrl+Pで前の候補が選択できます。
設定項目もたくさんあります。:help neocomplcache@ja とすれば日本語ヘルプが見れるので、参照しながら設定してください。
もしこのプラグインを使ったことがないのであれば、人生の半分は損をしています。
■テキストオブジェクト
Vim標準の機能です。カッコで囲まれたテキストをひとまとまりとして扱えます。例えば
if (hog*e == 2)
アスタリスク(*)を現在のカーソル位置として、di( と打つと
if ()
となります。カッコの中であればカーソルはどこにあっても構いません。また、da( だと
if
となって、カッコも含めてひとまとまりとしてくれます。d の部分はオペレーターなので、c に変えると削除+挿入モードになりますし、v に変えればビジュアル選択できます。また、カッコの中に改行があっても大丈夫です。
func (x) { <-このカッコの中で di{ とすると print "hoge"; print "foo"; }
func (x) { }
こうなります。対応しているカッコは[]、()、{}、<>、あとは""、''、``などのクオートにも対応しています。他にHTMLタグなどにも使えるのですが、詳しくは:help text-objectsを参照してください。
■surround
http://www.vim.org/scripts/script.php?script_id=1697
前述のテキストオブジェクトと対になるようなプラグインです。
テキストオブジェクトではカッコで囲まれたテキストを扱いますが、surroundは外側のカッコを扱います。テキストオブジェクトと同じ例だと
if (hog*e == 2)
アスタリスクの位置にカーソルを置いて ds( と打つと
if hoge == 2
となります。カッコの置き換えも可能で、オペレーターの d を c に変えて cs(] とすると置き換えられます。
if [hoge == 2]
オペレーターを y にすることで、カッコで囲むこともできます。
if *hoge == 2 | <- *の位置で ys$) でカーソル位置から$(行末)までを囲む -> | if (hoge == 2) if *hoge == 2 | <- *の位置で vllls) で選択範囲を囲む -> | if (hoge) == 2 if hoge == 2 | <- yss) で行を囲む -> | (if hoge == 2)
対応するカッコやクオートはテキストオブジェクトと同じです。もっと詳しく知りたい方は:help surroundを参照してください。
■NERD commenter
http://github.com/scrooloose/nerdcommenter
コードのコメントアウトを楽にするためのプラグイン。他にも色々試したけど、ヘビーに使うわけではなかったのでこれに落ち着いた。
とりあえず範囲を指定した上で、
いろんな言語に対応しており、言語にあった構文でコメントアウトしてくれる。
print("hoge") -> #print("hoge")
コメントアウトされた状態でもう1回コマンドを入力すると解除してくれる。
print("hoge")
#print("hoge") -> print("hoge")
コメントアウトされてない状態でもう1回入力しても変わらない。
print("hoge")
他にもプラグインならばAlignやsnipMate、開発補助としてはctagsとの連携機能があります。Vimでさらに効率よく開発したい人は調べて見てください。
とりあえず色々調べたいときは:help最強です。ヘルプの日本語訳もあります*1ので、そちらのサイトを参照してもいいと思います。