kana/vim-arpeggio · GitHub は同時押しをサポートするプラグイン。
設定するには arpeggio#map()関数を使うか、Arpeggiomap コマンドを使う。
ただし、Arpeggiomapコマンドをvimrc内で使うためには、その前に以下の関数を呼ばなければいけない。
call arpeggio#load() "arpeggioをこのvimrc内で有効にする
この関数を呼ばないとvimrc内でarpeggioのコマンドが有効にならない。注意。
設定例 fとjの同時押しにzj、fとkの同時押しにzkを充てたい
コマンドを利用した設定例(vimrcで設定する場合はarpeggio#load()を先に呼ぶこと)
"ノーマルモード Arpeggionnoremap fj zj Arpeggionnoremap fk zk "ビジュアルモード(セレクトモードを除く) Arpeggioxnoremap fj zj Arpeggioxnoremap fk zk
関数を利用した設定例
call arpeggio#map('nx', '', 0, 'fj', 'zj') call arpeggio#map('nx', '', 0, 'fk', 'zk')
caution!
もしも例えばjに以下のコマンドを充てている場合などはエラーメッセージが表示される。
nnoremap j gj nnoremap k gk vnoremap j gj vnoremap k gk
Key 'j' is already mapped in mode 'n'
Key 'k' is already mapped in mode 'n'
Key 'j' is already mapped in mode 'v'
Key 'k' is already mapped in mode 'v'
すなわち、arpeggioに使うキーに既にマッピングが充てられていると競合する。これを回避するためにはj kを以下のように迂回してマッピングする。
nmap <Plug>(arpeggio-default:j) <SID>gj nnoremap <SID>gj gj nmap <Plug>(arpeggio-default:k) <SID>gk nnoremap <SID>gk gk vmap <Plug>(arpeggio-default:j) <SID>gj vnoremap <SID>gj gj vmap <Plug>(arpeggio-default:k) <SID>gk vnoremap <SID>gk gk
参考:arpeggioとsmartchrを共存する場合の設定サンプル - while ("im the true Vim master"); - vimグループ
なお、同時押し判定がシビアと感じるなら、以下の変数で調整する。
let g:arpeggio_timeoutlen = 80