この記事は KLab Advent Calendar 2018 の二日目のエントリです。
日本語入力の状態管理って面倒くさい
vim を使っていて、日本語入力をする場合、NORMALモードからiを押してINSERTモードにしたあと、半角全角キーなどを使って日本語入力をONにして入力をはじめる事になりますよね。
この状態からNORMALモードに戻る時には、当然ですが、まず日本語入力をOFFにしたあとにESCキーを押してINSERTモードから抜ける事になります。
INSERTモードに入った時は日本語入力を行うかどうかはわからないので明示的にONするのは納得いくのですが、INSERTモードを抜けた後に日本語入力を行う事はないので、INSERTモードを抜ける時に自動的に日本語入力をOFFにしても問題ないはずです。
というわけで設定してみましょう。
Windowsの場合
Windowsの場合はキー設定を変更する場合、のどかを使います。(2019-09現在、サイト閉鎖されてしまったようです)
のどかの設定はホームディレクトリ下に dot.nodoka
というファイルを作ってそこに書き込みます。
ESCが押された時に日本語入力をOFFにするわけですが、半角全角キーだとトグルなので、&SetImeStatus
を利用して以下のように書きます。
key IL-Esc = &Default &SetImeStatus(off)
key C-IL-LeftSquareBracket = &Default &SetImeStatus(off)
IL-
はIMEがONになっている時を判定するモディファイヤで、その時にEscが押されると、通常のEscが押された時の動作( &Default
)と同時にIMEをOff( &SetImeStatus(off)
)にします。
C-[
を押した時にも同じ動作をしてほしいので、同じ設定を二行目に書いています。
Macの場合
Windowsで設定している事は当然Macでもやりたくなりますよね。Macでキー設定をカスタマイズする場合はKarabiner-Elementsを使います。
"rules": [
{
"description": "C-[ to ESC and KANA UNLOCK",
"manipulators": [
{
"from": {
"key_code": "open_bracket",
"modifiers": {
"mandatory": [
"control"
]
}
},
"to": [
{
"key_code": "escape"
},
{
"key_code": "lang2"
}
],
"type": "basic"
}
]
},
{
"description": "ESC to ESC and KANA UNLOCK",
"manipulators": [
{
"from": {
"key_code": "escape"
},
"to": [
{
"key_code": "escape"
},
{
"key_code": "lang2"
}
],
"type": "basic"
}
]
}
]
ことあるごとにESCを連打していこう
Windowsの場合、日本語入力のON/OFFは半角全角キーによるトグル操作なので、今の日本語入力の状態を自分で把握しておかないといけないですが、とりあえずESCキーを連打すれば日本語入力がOFFになるというのは他のエディタを使っていても直感的で便利です。
ESC連打していろんなことからESCAPEしていきましょう。