当我在〜中开始使用空白.vimrc并添加imap jj <esc>
它时,一切正常(即从插入模式键入jj退出 - >正常模式).但是当我向.vimrc添加更多内容时,除了进入正常模式之外,最终输入jj将跳过前面的光标,看似随机,短距离(几个字或几行).我没有把它归结为我添加到.vimrc的任何具体事情 - 它只是在某些时候从正常工作到故障.然后,如果我删除.vimmrc文件,重新使用新的.vimrc重新开始,那个奇怪的跳跃就会消失.
关于发生了什么的任何线索?
编辑:
我的完整〜/ .vimrc
set nocompatible
inoremap jj <esc>
而已.我已经将/ etc/vim/vimrc和/ usr/share/vim/vimrc重命名为vimrc.0,同样移动了〜/ plugins&〜/ ftplugins.
:imap
与:inoremap
这两个只显示i jj * <Esc>
我知道这已经存在很长时间了,但无论如何都要进行.
在"jj"的映射之后你碰巧没有任何评论吗?喜欢:
ino jj <Esc> " map jj to escape key
Run Code Online (Sandbox Code Playgroud)
也许在结束后有一堆空格大于对齐评论以使它们漂亮......
如果是这样的话,我会将注释移到映射上方,这样vim就不会认为你正在键入一个转义符后跟一堆空格或制表符(这会根据你的位置以看似随机的方式将光标向前移动).
" map jj to escape key
ino jj <Esc>
Run Code Online (Sandbox Code Playgroud)
要检查并查看问题是否确实是vimrc文件的格式,您只需在ex提示符下输入,然后查看它是否修复了当前会话的问题.
ino jj <Esc>
Run Code Online (Sandbox Code Playgroud)
如果在这之后你的"jj"映射按预期工作,那么它可能是我所描述的一些变化.要验证vimrc文件的格式,请通过在ex命令提示符下键入以下代码来搜索空白字符(设置hlsearch开启突出显示和/\s搜索空格.管道按顺序执行它们.).
set hlsearch | /\s
Run Code Online (Sandbox Code Playgroud)
在旁注.您可以做的一个很好的技巧是使用单个空格和注释来跟踪映射.这会让你超越你正在编辑的位置.
ino jj <Esc> " map jj to escape key
Run Code Online (Sandbox Code Playgroud)
新手用户的一个抱怨是,他们不喜欢位置在他们遇到逃生时如何移动到他们正在编辑的位置左侧的角色.就像你处于插入模式一样,你的光标位于"h"和"r"字符之间,如下所示:
one two th|ree
Run Code Online (Sandbox Code Playgroud)
并且你击中了逃生,你将处于正常模式的"h"之上.映射后空格的技巧会让你超越"r".