対象
- emacs、mac、linuxのキーバインドでvimのカーソル移動をしたい
- なんらかの事情でvimを扱う必要があるが、vimのキーバインドに慣れない(特にカーソル移動)
vimrcのリマップ
これを~/.vimrcに貼り付ければOK
~/.vimrc
noremap <C-p> <Up>
noremap <C-n> <Down>
noremap <C-b> <Left>
noremap <C-f> <Right>
noremap <C-a> <HOME>
noremap <C-e> <END>
noremap <C-d> <Del>
noremap <C-h> <BS>
noremap <C-k> <Esc>D
noremap <C-u> <Esc>dd
noremap! <C-p> <Up>
noremap! <C-n> <Down>
noremap! <C-b> <Left>
noremap! <C-f> <Right>
noremap! <C-a> <HOME>
noremap! <C-e> <END>
noremap! <C-d> <Del>
noremap! <C-h> <BS>
noremap! <C-k> <Esc>D
noremap! <C-u> <Esc>dd
解説
設定したキーバインド
コマンド | 動作 |
---|---|
ctrl + p | 1行上にカーソル移動 |
ctrl + n | 1行下にカーソル移動 |
ctrl + f | 1行右にカーソル移動 |
ctrl + b | 1行左にカーソル移動 |
ctrl + a | 行の先頭にカーソル移動 |
ctrl + e | 行の末尾にカーソル移動 |
ctrl + d | カーソルの右の一文字を削除(delete) |
ctrl + h | カーソルの左の一文字を削除(back space) |
ctrl + k | カーソルから行末まで削除 |
ctrl + u | 1行削除 |
※ctrl + kが連続使用できない(とりあえず妥協) | |
※page up,down系はhhkbのキーバインドで不便していないので省略 |
vimのマッピング
どうやらvimにはノーマル、ビジュアル、選択、オペレータ待機、挿入、コマンドラインなどのモードがあるようだ
noremapとnoremap!で大体カバーできるみたいなので、容赦なくリマップする
コマンド モード
:map :noremap :unmap ノーマル、ビジュアル、選択、オペレータ待機
:nmap :nnoremap :nunmap ノーマル
:vmap :vnoremap :vunmap ビジュアル、選択
:smap :snoremap :sunmap 選択
:xmap :xnoremap :xunmap ビジュアル
:omap :onoremap :ounmap オペレータ待機
:map! :noremap! :unmap! 挿入、コマンドライン
:imap :inoremap :iunmap 挿入
:lmap :lnoremap :lunmap 挿入、コマンドライン、Lang-Arg
:cmap :cnoremap :cunmap コマンドライン
:tmap :tnoremap :tunmap 端末ジョブ
参考
https://vim-jp.org/vimdoc-ja/map.html#map-overview
さいごに
いろんなサーバに入ることが多いのですが、emacsは当然入っていません。
コーディングはIDEで行っているので、最低限のカーソル移動系のキーバインドだけどうにかしたいと思い設定しました。
本当のemacs派の人には物足りない設定になっているでしょうが、そこはすみません
(追記したほうがいいものがあれば教えてください)