vimのキーマップ設定にユニコードを使う ひとりぷちアドベントカレンダー2017 08日目
vimのキーマップ設定はユニコードの記述?でもいけるよ、というお話。
凡ミスにより、バックスラッシュ
と円記号
との戦いの中でたどり着きました。
やりたかったこと
windowsのvimで、円記号
のキーを押したときチルダ
を入力する、という事が目的です。
そのときの環境は少し特殊で、キーボードにてバックスラッシュ
と円記号
が別々にて入力できました。代わりにチルダ
の入力ができなかったのでキーマップでごまかしたかったのです。
ユニコードな指定方法
次のような記述で目的を果することができました。
" c2a5 U+00A5 YEN SIGN noremap <char-0x00A5> ~ noremap! <char-0x00A5> ~
単純に <char-0x
に続けてユニコードな指定を行うというものです。
この辺りの詳細は次のヘルプで確認できます。
:help <Char>
そもそもの原因は
大本の原因は、いつのまにやらfileencoding=cp932
になっていた事です。
この事に気づけなかったため今回の方法を探す事になりました。
前記の通り、バックスラッシュ
と円記号
を別に入力する事はできます。
そのため.vimrc
にマッピングを設定するまでは問題ないです。
この時点ではg8
によってバックスラッシュ
と円記号
が別の文字である事が確認できます。
ですが、保存後に開き直すと円記号
がバックスラッシュ
に変化してしまいました。その結果、目的が果たせませんでした。円記号
ではなくバックスラッシュ
宛の割当になってしまうのです。
たしか印字文字以外での指定方法があったな、ということでいろいろ探した結果、今回の方法にたどりつけました。
終わりに
vim
は柔軟にマッピングできるのでありがたいですね。発展を支えてくださる方々に日々感謝。