Vim script で文字列を比較する場合の注意
2回ぐらい Lingr に話題になったネタなんですがいつも忘れているので覚書。
Vim script で文字列を比較する場合、==# を使用する事が多いと思います。
let s:homu = "homu" echo s:homu ==# "mado" " => 0 echo s:homu ==# "homu" " => 1
上記の場合だと問題はないのですが、文字列以外の場合と比較する場合に問題になります。
" 数値を設定する let s:homu = 0 echo s:homu ==# "" " => 1 echo s:homu ==# "homu" " => 1
このように両方とも 1 が返ってきます。
[回避方法]
is#、isnot# を使用します。
let s:homu = "homu" echo s:homu is# "mado" " => 0 echo s:homu is# "homu" " => 1 let s:mami = 0 echo s:mami is# "" " => 0 echo s:mami is# "mami" " => 0
これは is 演算子が型まで考慮するためです。