LoginSignup
25
23

More than 5 years have passed since last update.

Vimで言うところの「単語」ってどうやって決まるのさ?

Posted at

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+=@-@

@-@は文字の@を表す。@は英字を表す特殊文字なので。

。。。などなど、便利に使ってください。

25
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
23