最近使用vim发现了一个很奇怪的问题:
在insert mode下输入上下左右 方向键 会输入OAOBOCOD。
搜了下发现比较多的解决方案是:
set nocompatible
作为一个old vimer,肯定是不会犯这种错误的。
那么问题在哪呢?
在stackoverflow上发现了一个回答stackoverflow,大意就是当你输入<-时vim看到的是<esc>[d
。
突然惊醒!前几天设置了esc键的映射!我的设置是inoremap <esc> <nop>
(我使用了其他键映射到esc),当我输入<-时,实际上输入的是<nop>[d
,那么vim自然无法识别为方向了。
那么解决方案呢?
1.不设置esc的mapping:自然就可以了,这当然治标不治本,我写到这里结束岂不是耽误读者的时间?
2.照常使用inoremap <esc> <nop>
,但在此之后加上inoremap <esc>[ <esc>[
,强行设置<esc>[
的映射。那么再次输入<-的时候,vim检测到的<esc>[
就不会被转义了。
这个解决方案太他妈天才了!
在中文网站上貌似没看到这种解决方案,故分享之。