読者です 読者をやめる 読者になる 読者になる

mapが難しい

 久しぶりにターミナルからvimで作業しようとしたら、インサートモード時の矢印キーの挙動がおかしくなった。例えば←↑↓→とタイプしていくと、

C|
B
A
D

となった。(|はカーソル位置)
 gvimだと普通に動いたので何が何だが訳が分からず。とりあえず矢印キーはどういう風に割り当てられてるのかを調べてみると↑は ^[OA となっていた。(CTRL-v ↑で出ますね)

 よくよく見てみると、^[はescなので

  • インサートモード抜ける(esc)
  • O (再度インサートモードへ)
  • Aタイプされる。

という順になっているよう。そう考えるとカーソル位置のつじつまが合う。(:h cursor-keys)


 この現象は今のvimrcを読み込まないと起こらなかったので、何処かのmapが悪さをしているに違いないと考え調査した結果

inoremap <expr> <esc> pumvisible() ? "\<c-e>" : "\<esc>"

これが悪さをしていた模様。試しに

inoremap <esc> hoge

で試したらhogeOAとか出ました...。*1

さてどうしましょう?(未解決)

その後

 考え方を変えよう。

map <Up> <nop>
map <Down> <nop>
map <Left> <nop>
map <Right> <nop>
imap <Up> <nop>
imap <Down> <nop>
imap <Left> <nop>
imap <Right> <nop>

本当に覚えたいならより:qa!の方が...。

*1:インサートから抜けられなくなるので注意