Vimで括弧/クォートを自動補完


人がコード書いてるところを見ると、閉じ括弧を先に入力してひとつ戻ったり、あとで入力するつもりで閉じ忘れていたりと、無駄な苦労だなぁとおもうことがよくある。


Vimで以下の設定をしていると括弧やクォートを入力したときに自動で閉じてくれる。

Eclipseとか、VS.NETとかの一般的なIDEの動作に近い感じ。

inoremap { {}<LEFT>
inoremap [ []<LEFT>
inoremap ( ()<LEFT>
inoremap " ""<LEFT>
inoremap ' ''<LEFT>
vnoremap { "zdi^V{<C-R>z}<ESC>
vnoremap [ "zdi^V[<C-R>z]<ESC>
vnoremap ( "zdi^V(<C-R>z)<ESC>
vnoremap " "zdi^V"<C-R>z^V"<ESC>
vnoremap ' "zdi'<C-R>z'<ESC>

(^VはVimだとCtrl-v Ctrl-vで入力)


インサートモードのときは自動で閉じる。

ビジュアルモードの時は自動で囲んでくれる。


ちょっとした設定だけど、これでかなり楽になってるなぁ。showmatch とかいらない。

もっとちゃんとした plugin が vim online にありそうだけど、探した範囲ではないなぁ。


英文書いててアポストロフィーの入力でシングルクォートが補完されてしまったりと、結構適当だけど、まぁこれで今のところ満足してる。


ただ、周りにVimつかう人がいないので、こんな設定教えても無駄だという・・・


あと、HTML/XML のタグ自動補完はxmledit 使ってる。


追記

カリスマ曰く、

2006年11月14日 yoshiki vimこういうのって癖になっちゃってて、設定すると逆にストレスになったりもするし、逆にいつもウザイなーと思ってるところを設定するとちょー楽になったりもする。

冒頭ではああいうふうに書きましたが、俺もそう思います。
万人に有効な設定ではないですね。


でも、これはしてみる価値はある設定だとおもいますよ。

Emacsでどうやるのかは知らないけど、なければ作って試してみてください(>_<)g。