![vimは言葉が何だと思いますか? [コピー]](https://linux33.com/image/44549/vim%E3%81%AF%E8%A8%80%E8%91%89%E3%81%8C%E4%BD%95%E3%81%A0%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
重複の可能性:
a-zA-Z以外の文字を含む単語と一致します。
vim
単語の定義を理解していません。モーションヘルプw
(:h w
):
w[前世紀]の言葉。 |独占|スポーツ。このコマンドは単語または単語の上に移動します。
*word*
単語は、一連の文字、数字、および下線またはスペース(スペース、タブ、)で区切られたスペース以外の文字のシーケンスで構成されます。これは「iskeyword」オプションを使用して変更できます。
これは、私がw
タスクを呼び出すときにvimがこのオプションを使用して、どの文字が単語を構成できるかを確認する必要があることを意味しますiskeyword
。単語がどの文字で構成されているかを見てみましょう。
:set iskeyword?
iskeyword=@,48-57,_,192-255
iskeyword
たとえば、オプションにリストされている文字に含まれていない文字でテストしますU+015B LATIN SMALL LETTER S WITH ACUTE
。ga
を押すと、ś
10進値が347で、これは255より大きいため、範囲外です
iskeyword
。カーソルをt
treśćに置き、次へを押しますw
。
treść bar
^ (cursor)
結果:
treść bar
^ (cursor)
単語で構成できる場合文字、数字、下線など唯一の可能性は、vimがそれを次ś
のように扱うことです。手紙、明らかに数字や下線ではないからです。文字が文字かどうかを確認する方法を確認しましょう。から:h :alpha:
:
次の文字クラスがサポートされています。 [:α:] [:alpha:] 文字
テストする
/[[:alpha]]
表示はś
文字とは見なされません。
文字、数字、アンダースコアでもリストされていないb
場合、カーソルが移動するのはなぜですか?ś
iskeyword
VIMでテスト済み - Vi IMproved 7.3(2010年8月15日、2012年12月27日21:21:18コンパイル)パッチ付き:Debian GNU / Linuxの1-762、locale
en_GB.UTF-8
。
答え1
その理由は、Ulrichが彼の意見で述べたように、マルチバイト文字は常に単語の一部と見なされるためです。では指定する必要はありませんiskeyword
。:h iskeyword
ヘルプを引用すると、次のようになります:h isfname
。
常に256文字以上のマルチバイト文字を含み、最大255文字を指定するには、このオプションのみを使用してください。 UTF-8の場合、0xa0から0xffまでの文字も含まれます。