vimは言葉が何だと思いますか? [コピー]

vimは言葉が何だと思いますか? [コピー]

重複の可能性:
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 ACUTEgaを押すと、ś10進値が347で、これは255より大きいため、範囲外です iskeyword。カーソルをttreśćに置き、次へを押します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までの文字も含まれます。

おすすめ記事