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

时间:2014-05-08 17:43:55

标签: 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>

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

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

2 个答案:

答案 0 :(得分:7)

基于this page,您可以使用以下映射进行此操作。

 noremap  <Up> ""
 noremap! <Up> <Esc>
 noremap  <Down> ""
 noremap! <Down> <Esc>
 noremap  <Left> ""
 noremap! <Left> <Esc>
 noremap  <Right> ""
 noremap! <Right> <Esc>

我对它们进行了测试并且它们有效,但我现在还不明白为什么这种魔法会起作用。

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

答案 1 :(得分:1)

A B C D的插入响铃。您似乎遇到Fix broken arrow key navigation in insert modeFix arrow keys that display A B C D on remote shell中描述的问题,可能还有解决方法。

这会干扰:imap<Nop>