Vimで好きなキーをEscに設定&ノーマルモード遷移時に半角入力にする
最近vimを職場で使い始めたのですが、まだ操作に慣れていないことに加えて、
以下作業が煩わしく感じるようになりました。
- Escキーが遠い。(CTRL + ] もちょっと遠い)
- 全角入力のままノーマルモードに遷移してしまい、vimコマンドが効かなくなってしまう。
そこで、職場の人に教えていただいたり、ネット記事を参考にして、
好きなキーをEscに設定&ノーマルモード遷移時に半角入力にする設定を行ったので、
備忘録として残します。
具体的には以下作業を実施しました。
- 好きなキーをEscに設定 → .vimrcで好きなキーをキーバインド
- ノーマルモード遷移時に半角入力にする → Karabinerというアプリを使って、上記設定したキーを押下時に半角入力にする
KarabinerがmacOS用アプリのため、環境はMacを想定しています。
設定環境
macOS Catalina 10.15.7
キーボードはJISキーボードを使用しています。
好きなキーをEscに設定
こちらは以下記事を参考にしました。
私は[Ctrl+j]をEscキーとして設定しました。
設定方法として、vim設定ファイルである".vimrc"にキーバインド情報を追記します。
ターミナルを開いて、以下コマンドを実行します。
noremap <C-j> <esc>
noremap! <C-j> <esc>
noremapを使ってキーを割り当てます。
noremapについては、以下を参考にしました。
noremapを使うことでユーザが指定した他のキー割り当ての影響を受けません。
" noremapでキーバインドを設定
" 以下ではCtrl+jをEscキーに設定しています。
noremap! <C-j> <esc>
設定を保存して、vimを開き直すと設定したキーが、Escキーとして動くことが確認できると思います。
ノーマルモード遷移時に半角入力にする
karabinerというmacOSのキーボードをカスタマイズするためのアプリを使って、キーカスタマイズを行います。
こちらは、以下記事を参考にさせていただきました。
Karabiner-elementsを使って、ctrl+[を押して日本語→英語入力に切り替えたい(neovimをterminalから使っている)
上記記事では、もともとのEscキーと "Ctrl+[" 入力時に半角入力に戻す設定としています。
- karabiner-Elements の preferences を開きます。
- Complex modifications のタブを選択します。
- 左下の "Add rule" を選び、上部の import more rules from the internet (open a web browser) のボタンを押します。
- そうするとWebサイトに飛びます (https://ke-complex-modifications.pqrs.org/)
- For Japanese (日本語環境向けの設定) (rev 5) を探し、インストール(Importボタンより)します。
- その後、 Ctrl+[を押したときに、英数キーも送信する (vim用) (rev 2) をEnableにします。
- ついでにESCキーも同様の挙動にしたければ escキーを押したときに、英数キーも送信する (vim用) もEnableにします。
今回は自身で設定した、"Ctrl+j"押下時も半角入力に戻したいため自身で独自ルールを作成します。
こちらは以下サイトを参考にしました。
ターミナルでkarabinerの設定ファイルを編集します。
vim ~/.config/karabiner/karabiner.json
descriptionに自身が設定した"Ctrl+[を押したときに、英数キーも送信する(vim用) (rev 2)"があります。こちらを参考にし、自身の独自ルールを作成しました。
注意
設定ファイルのため、必ずバックアップを取ってから編集してください。
またキーボード種類によって設定ファイルの内容が異なる場合があります。
【修正箇所】
"Ctrl+[を押したときに、英数キーも送信する(vim用) (rev 2)"のルールより、
"open_bracket"の記述を、"j"に置換
{
"description": "Ctrl+をj押したときに、英数キーも送信する(vim用) (rev 2)",
"manipulators": [
{
"conditions": [
{
"keyboard_types": [
"ansi",
"iso"
],
"type": "keyboard_type_if"
}
],
"from": {
"key_code": "j",
"modifiers": {
"mandatory": [
"control"
]
}
},
"to": [
{
"key_code": "j",
"modifiers": [
"control"
]
},
{
"key_code": "japanese_eisuu"
}
],
"type": "basic"
},
{
"conditions": [
{
"keyboard_types": [
"jis"
],
"type": "keyboard_type_if"
}
],
"from": {
"key_code": "close_bracket",
"modifiers": {
"mandatory": [
"control"
]
}
},
"to": [
{
"key_code": "close_bracket",
"modifiers": [
"control"
]
},
{
"key_code": "japanese_eisuu"
}
],
"type": "basic"
}
]
}
上記の設定を、"escキーを押したときに、英数キーも送信する(vim用)"ルールの上に挿入します。
(この設定の上に、挿入しないとうまく反映されなかった。。。)
保存するとkarbinerの設定画面で、自身の追記した設定が追加されたことが確認できます!
確認してみると、、、
ctrl+j押下で、、、
自身で設定したキーによってノーマルモードに遷移し、さらに半角入力にすることができました!
最後に
書いてみると意外と長くなり大変だった。
githubとかに設定ファイル置いておくのが便利だなと思いました。。。
Author And Source
この問題について(Vimで好きなキーをEscに設定&ノーマルモード遷移時に半角入力にする), 我々は、より多くの情報をここで見つけました https://zenn.dev/mori1110/articles/5eda7ab58d128c5165f5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol