Hack #60: 検索、マッチング時の大文字と小文字の区別を制御する
Posted at 2009/08/21ツイート
Vim では検索や文字列のマッチングをする際、ローマ字の大文字と小文字を区別するかどうかを様々な方法で制御できます。
'ignorecase'
'ignorecase'
オプションが on の時、大文字と小文字の違いは無視されます。
このオプションは通常の検索時以外にも文字列のマッチングが行われる箇所で参照されます。
'smartcase'
'ignorecase'
オプションが on の時、検索文字列に大文字が含まれている場合のみ、大文字と小文字を区別します。
これは「わざわざ大文字を指定したのなら区別して欲しいに違いない」という考えから来ています。
'ignorecase'
が on の時でも有効です。
\c と \C
パターン中に \c や \C を含めることで大文字小文字の区別を制御できます。
これらが指定された場合、 'ignorecase'
'smartcase'
の値は無視されます。
\c を指定すると大文字小文字を無視、\C を指定すると大文字小文字を区別するようになります。 指定する場所は関係なく、パターン内のどこかで指定するとパターン全体に適用されます。
文字列比較
Vim script で文字列を比較する際、比較演算子を使用しますが、使う演算子によって大文字小文字の区別を制御できます。 比較演算子の最後に # を付けると大文字小文字を区別し、? を付けると大文字小文字を無視するような比較になります。
比較の種類 | 'ignorecase' を使う | 大文字小文字を区別する | 大文字小文字を無視する |
---|---|---|---|
同値 | == | ==# | ==? |
異値 | != | !=# | !=? |
正規表現マッチ | =~ | =~# | =~? |
正規表現非マッチ | !~ | !~# | !~? |
この表では省略しましたが、文字列比較には大小関係を比較する > >= < <= もあります。これらにも # と ? を付けたものがそれぞれあります。
thincaもどる
blog comments powered by Disqus