curluneの日記

日々試行錯誤。雑多に、気ままに、てきとーに。HoloLens/Oculus Rift,Touchと戯れる日々。

vimのキーマップ設定にユニコードを使う ひとりぷちアドベントカレンダー2017 08日目

vimのキーマップ設定はユニコードの記述?でもいけるよ、というお話。

凡ミスにより、バックスラッシュ円記号との戦いの中でたどり着きました。

やりたかったこと

windowsvimで、円記号のキーを押したときチルダを入力する、という事が目的です。

そのときの環境は少し特殊で、キーボードにてバックスラッシュ円記号が別々にて入力できました。代わりにチルダの入力ができなかったのでキーマップでごまかしたかったのです。

ユニコードな指定方法

次のような記述で目的を果することができました。

"  c2a5 U+00A5 YEN SIGN
noremap <char-0x00A5> ~
noremap! <char-0x00A5> ~

単純に <char-0x に続けてユニコードな指定を行うというものです。 この辺りの詳細は次のヘルプで確認できます。

:help <Char>

そもそもの原因は

大本の原因は、いつのまにやらfileencoding=cp932になっていた事です。 この事に気づけなかったため今回の方法を探す事になりました。

前記の通り、バックスラッシュ円記号を別に入力する事はできます。

そのため.vimrcマッピングを設定するまでは問題ないです。 この時点ではg8によってバックスラッシュ円記号が別の文字である事が確認できます。 f:id:curlune:20171208044522p:plain

ですが、保存後に開き直すと円記号バックスラッシュに変化してしまいました。その結果、目的が果たせませんでした。円記号ではなくバックスラッシュ宛の割当になってしまうのです。

たしか印字文字以外での指定方法があったな、ということでいろいろ探した結果、今回の方法にたどりつけました。

終わりに

vimは柔軟にマッピングできるのでありがたいですね。発展を支えてくださる方々に日々感謝。