今天把hexo迁移到mac上了,写hexo blog的利器自然是vim啦。果断下载自己的vimrc,稍微改改配置就用在了mac上,各种插件和体验都很好。
然而,我作为vim的非忠实粉丝,还是习惯用up
/down
/left
/right
方向键来移动光标,至于k
/j
/h
/l
是什么鬼,没听说过。然而,当我愉快地在insert
模式下按下方向键时,A
/B
/C
/D
跳出来了…… 哎!Vim大哥,我不是要唱字母歌的有木有!!!
于是,我开始在google大大上搜寻解决方案,其中一篇文章Fix arrow keys that display A B C D on remote shell 给出了21种解决方案,真是“诚意满满”,然后我开始尝试。下面给出几个有代表性的。
1. 改变term
直接输入1
:set term=ansi
或者1
:set term=xterm
嗯,的确解决了问题。哎,等等,我好看的vim主题去哪了,作为外貌协会的我肯定不答应!再换一个。
2. 用imap
在vimrc文件中输入以下代码1
2
3
4imap ^[OA <ESC>ki
imap ^[OB <ESC>ji
imap ^[OC <ESC>li
imap ^[OD <ESC>hi
注意,这里的^[
要通过<C-v><ESC>
按出来。
嗯,的确是可以了,但是每次按完方向键,都会自动从insert
模式回到normal
模式,这也还是有点不爽。不过这个方案我还是忍了蛮久。
3. 好用但不知道原理的解决方案
最近还是发现 方案2 不好用,但给出的解决方案都不能满足我的需求,于是我开始自己尝试。
一开始把imap ^{OA <ESC>ki
注释掉,发现竟然按up
方向键仍然在insert
模式,且没有字母A
。太棒了,然后我依次把后面几行也注释掉,并尝试,都没什么问题。但注释到最后一行的时候,A
/B
/C
/D
又跳出来了。好吧,那我试试下面的方案呢?1
imap ^[OE <ESC>hi
这里把D改成E,晕,竟然解决了我的问题,真是好用!但是,原理是啥?imap
的映射表现之前很奇怪,而E
是不存在的,反而就解决了A
/B
/C
/D
的问题…如有高人知道原因,请不吝赐教。