Hatena::ブログ(Diary)

何気に大変 このページをアンテナに追加 RSSフィード Twitter

2010-09-05

Vimで開発するならこれだけはやっとけ

| 02:52 | Vimで開発するならこれだけはやっとけを含むブックマーク 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

コードのコメントアウトを楽にするためのプラグイン。他にも色々試したけど、ヘビーに使うわけではなかったのでこれに落ち着いた。

とりあえず範囲を指定した上で、<Leader>c<Space> で1行コメントの切り替え、<Leader>cuコメントアウト解除だけ覚えておけば困らない。<Leader>はデフォルトではバックスラッシュもしくは円マークになっている。

いろんな言語に対応しており、言語にあった構文でコメントアウトしてくれる。

<Leader>c<Space>

print("hoge") -> #print("hoge")

コメントアウトされた状態でもう1回コマンドを入力すると解除してくれる。

print("hoge")

<Leader>cu

#print("hoge") -> print("hoge")

コメントアウトされてない状態でもう1回入力しても変わらない。

print("hoge")


他にもプラグインならばAlignやsnipMate、開発補助としてはctagsとの連携機能があります。Vimでさらに効率よく開発したい人は調べて見てください。

とりあえず色々調べたいときは:help最強です。ヘルプの日本語訳もあります*1ので、そちらのサイトを参照してもいいと思います。

tenkomatenkoma 2010/09/05 17:56 イイ記事ですね。これがきっかけで.vim / .vimrc アップデートしました。

> if *hoge == 2 | <- *の位置で vllls) で選択範囲を囲む -> | if (hoge) == 2

hoge という単語を選択するなら viws) を使った方がいいと思います。