Vimのコマンドには、単語単位での操作がいろいろある。
でもその「単語」はどうやって決まっているのか。分からないと迂闊にw
を押せないよ。。。
ということで調べてみた。
iskeyword
早速結論だけど、iskeywordという設定値で単語が定義されている。
ここで設定された文字が続く限りは、単語とみなされるという仕組み。
ドキュメントによると、
- Windowsでの規定値:"@,48-57,_,128-167,224-235"
- それ以外のシステムでの規定値:"@,48-57,_,192-255"
となっているらしい。
@
は、関数isalpha()
でTRUE
が返るような文字(=a-z,A-Zと、これらにアクセントが付いたもの)を表す。
また、48-57
などの数値での指定はASCIIコードでの範囲指定を表す。48-57
は数字の0-9のこと。128以降は拡張ASCCIIというので定義されているらしいけど、日本人はほぼ使わないと思う。
つまり、デフォルトでは英数字と_
の塊が単語としてみなされるということ。
設定値の確認
設定値を確認したいときは以下を入力すればOK。
:set iskeyword
もしくは、
:set isk
変更例
たとえばCSSを編集してるとき。margin-top
とか、ハイフンも単語の一部とみなしてほしくなる。
なので、ハイフンをiskeywordに含めてやる。
:setlocal isk+=-
たとえばRubyでクラスの編集をしてるとき。@foo
, @@bar
を単語として扱ってほしい。
そんなときは、
:setlocal isk+=@-@
@-@
は文字の@を表す。@
は英字を表す特殊文字なので。
。。。などなど、便利に使ってください。