🙄

Vim で {マルチバイト文字}{英字}{スペース} の組み合わせで検索できない

に公開

前々からなんか挙動がおかしいなーと思っていたんですが再現できたので覚書。
Vim で {マルチバイト文字}{英字}{スペース} の文字列が / 等で検索できないって話なんですが例えば次のようなテキストがバッファ上にあるときに

あいうえおa bbb

/おa で検索するとマッチしてほしいんですがマッチしない。

これは Vim script の matchstr も同様の動きになっていて以下のスクリプトでもマッチしません。

echo matchstr("あいうえおa bbb", "おa ")
" => 空

逆に次のような正規表現だと問題ないです。

" マルチバイト文字がない場合
echo matchstr("あいうえおa bbb", "a ")
" => "a "

" スペース文字がない場合
echo matchstr("あいうえおa bbb", "おa")
" => "おa"

" スペース文字じゃなくて \s の場合
echo matchstr("あいうえおa bbb", "おa\\s")
" => "おa "

" 英字がない場合
echo matchstr("あいうえお bbb", "お ")
" => "お "

なぜか {マルチバイト文字}{英字}{スペース} の組み合わせだとうまくマッチしないんですよねえ…。
他にも再現条件があるかもしれない。

ちなみに Vim のバージョンは VIM - Vi IMproved 9.1 (2024 Jan 02, compiled Nov 15 2025 15:53:51)

GitHubで編集を提案

Discussion