Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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

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

Kta-M
fusic
個性をかき集めて、驚きの角度から世の中をアップデートしつづける。
https://fusic.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away