vim-users.jp

Hack #214: 括弧までを消したり置き換えたりする

Posted at 2011/04/21
このエントリーをはてなブックマークに追加

問題

プログラミングを行うということは、それすなわち括弧と友達になるということです。

現在のカーソル位置から次の閉じ括弧までの文字を一気に置き換えたい、というシーンは多々あると思います。

let l:lines = getbufline(buf■r(a:filename), 1, '$')

例えば上記のようなコードを記述しており、カーソル位置は■とし、この位置からa:filenameの直後の閉じ括弧までをまとめて削除し、bufnrのかわりにbufloadedと記述したいというケースを考えてみましょう。直後に開き括弧が存在し、これらは1トークンではないため、weなどをそのまま使うことはできません。文字数を正確に数えることも困難です。おそらくt)feの二択となるでしょう。ただし後者を使う場合、正確にeがそれまで存在しないことを確認する必要があるため、より非存在性を確認しやすい括弧を用いて指定することになると思います。

こういった操作をする機会は、ほとんど意識されないものの、かなり多いことが最近の研究で明らかになっています。(*1)

解決

文単位モーションの()の使用をやめ、これにt(などを割り当てましょう。~/.vimrcに以下を記述します。

onoremap ) t)
onoremap ( t(
vnoremap ) t)
vnoremap ( t(

あとはt)などを使用するかわりにたんに)などと打鍵します。上記設定のおかげで、あなたのソフトウェア開発にかかる時間の50%が短縮できます。

参考

  • (*1) 要出典
  • :h )
  • :h t
ujihisa

もどる
blog comments powered by Disqus