如何在插入模式下禁用箭头键?

Ale*_*lex 12 vim

我的.vimrc中有以下几行,我认为这样就足够了:

nnoremap <left> <nop>
nnoremap <right> <nop>
nnoremap <up> <nop>
nnoremap <down> <nop>

inoremap <left> <nop>
inoremap <right> <nop>
inoremap <up> <nop>
inoremap <down> <nop>
Run Code Online (Sandbox Code Playgroud)

箭头键在正常模式下不执行任何操作(如预期),但在插入模式下继续运行.我也尝试过imap,这也不起作用.查询映射inoremap <left>确认绑定不会被其他内容覆盖.我不确定发生了什么.

作为最后一次测试,我启动了vim而没有vimrc vim -u NONE,然后只运行了映射.如果我现在进入插入模式并按箭头键,它会在我光标所在的新行上插入字母A,B,C或D,这完全不是我所期望的.

mer*_*011 8

基于此页面,您可以使用以下映射来完成此操作.

 noremap  <Up> ""
 noremap! <Up> <Esc>
 noremap  <Down> ""
 noremap! <Down> <Esc>
 noremap  <Left> ""
 noremap! <Left> <Esc>
 noremap  <Right> ""
 noremap! <Right> <Esc>
Run Code Online (Sandbox Code Playgroud)

我测试了它们并且它们有效,但我现在不明白为什么这个魔法有效.

特别是,我不确定为什么有必要进行两次映射,但它应该对解决问题有效.

  • 有几个 `:help map-modes`,`:map` 和 `:map!` 变体都捆绑了其中的几个;它们一起涵盖了_所有_模式。 (2认同)