Vim で全角空白入力時に半角空白に置き換える
職場の人から「Vim で全角空白を入力した場合に、自動的に半角空白に置き換えたい」という話を聞いて、確かに便利そうだと思って調べてみました。
通常であれば inoremap とか使えば良さそうなんですが、どうやら全角空白には効かない模様。
" 普通の全角記号を半角に変更するのは OK inoremap * * inoremap = = inoremap ( ( inoremap ) ) " 全角空白を半角空白に変更するのは NG?? inoremap <Space>
全角空白の特別な書き方があるのかも知れませんが、適当にいろいろと試してみた限りでは分からず・・・。
簡単に出来ないとなると余計気になって調べてみたら、InsertCharPre イベントが使える場合は以下のようにすれば出来るようです。
autocmd InsertCharPre <buffer> if v:char == ' ' | let v:char = " " | endif
というわけで、inoremap で上手く行かない場合は InsertCharPre イベントを試してみるといいかもですね。
ただ、CentOS の Yum で入る Vim など、若干古いバージョンでは InsertCharPre イベントが 使えなかったりもするので、「:help InsertCharPre」などで事前に使えるか調べておくといいかと思います。