Monthly Archives: March 2015

vim-autocloseの補完対象の追加と削除

前置き

lisp系言語を使っているとカッコの対応をとるのがつらぽよになるので, エディタの支援機能を使うのが一般的(らしい)です.
カッコの色付けにより対応をわかりやすくするのはよく見る(気がする)支援機能ですね. あとは, 左カッコと同時に右カッコが補完される機能が, 賛否両論みたいですが割とメジャーっぽいですね.

さて,僕がよく使うエディタはvimなのですが, vimにも支援機能は当然あります. 僕は色付けにkien/rainbow_parentheses.vimを, カッコの自動補完にTownk/vim-autocloseあたりを使ってます. (ぶっちゃけあまり良く調べずにとりあえず使ってる)

このvim-autoclose, 各種カッコに限らず, 各種クォートも補完してくれるのですが, lispではシングルクォートってシンボルとかquoteに使うし, バッククォートも準クォートとかシンタックスクオートとかに使うんで, 補完されるとぶっちゃけ邪魔です.
他にも, rubyでは|をブロックでよく使うので補完してほしいのですが, こちらは逆に補完してくれません.
filetypeに合わせて, 補完対象を変えてくれたら便利ですよね. と思ってググったところ日本語情報が見つからなかったので, vim-autocloseのドキュメントにあたったところ, 解決策を発見出来たので, 書き残す次第です.

本題

vim-autocloseのドキュメントによると,

AutoClose#DefaultPairsModified(pairsToAdd, openersToRemove)

という書式で補完対象の追加, 削除が出来るようです. さらに実際の利用例も載っています.

" auto-close || pair in ruby files
      autocmd FileType ruby
              \ let b:AutoClosePairs = AutoClose#DefaultPairsModified("|", "")

これで, filetypeがrubyだった場合, |も補完対象に含めてくれるようです. 他にも自分のほしい機能を.vimrcに設定してみました.

autocmd FileType lisp let b:AutoClosePairs = AutoClose#DefaultPairsModified("", "' `")
autocmd FileType clojure let b:AutoClosePairs = AutoClose#DefaultPairsModified("", "' `")

シングル, バッククォートを外してみました. こんな感じでいろいろ設定するといいと思います. (そんなに複雑な設定をするようなものでもない気がするけど)

では, 良きvimライフを

余談

久々に書いたらやけに丁寧口調になった
こういうのっってqiitaに書いたほうがいいんだろうか