2010-01-17 146 views
1

当我在〜中加入一个空白的.vimrc,并且加上imap jj <esc>时,一切正常(即,输入jj从插入模式退出 - >普通模式)。但是,当我在.vimrc中添加更多内容时,最终键入jj会将光标向前跳过一些看起来随机的短距离(几个字或几行)以及进入正常模式。我没有把它固定到我添加到.vimrc的任何特定的东西 - 它只是在某些时候从正常工作到发生故障。然后,如果我删除.vimmrc文件,重新开始一个带有该映射的新.vimrc文件,奇怪的跳跃就会消失。Vim重新映射奇怪

任何关于发生了什么的线索?

编辑:

我的完整的〜/ .vimrc

set nocompatible
inoremap jj <esc>

就是这样。我已将/ etc/vim/vimrc/usr/share/vim/vimrc更名为vimrc.0,并同样将〜/ plugins &〜/ ftplugins。

:imap & :inoremap双方只显示i jj * <Esc>

+0

你可以粘贴你的.vimrc吗?您是否在每个添加的行后尝试测试映射? – 2010-01-17 17:34:26

+1

此外,检查:imap,看看是否没有其他映射j或jj – Pikrass 2010-01-17 17:48:48

回答

2

您可能需要使用inoremap而不是imap。这将防止其他映射进一步替代您的映射。从vim wikia

“为简单起见,我们将展示:imap但细心的Vimmer在使用:inoremap不尝试解释的映射(与:imap命令的结果的习惯,结果被扫描,看是否它包含另一个映射)“。

但是,如果另一个映射包含j,那么即使使用inoremap,也可能会出现此问题。

1

的另一件事情在你的调试要考虑的是一个全球性的vimrc文件的存在,往往在/etc/vimrc

这有可能是你在与冲突的全局文件映射用户的~/.vimrc

7

我知道这已经在这里很长一段时间了,但无论如何,这里都是如此。

你在“jj”的映射后不会有任何意见吗?像:

ino jj <Esc> " map jj to escape key 
后用一堆空间

也许收盘大于对齐的意见,使他们漂亮......

如果是这样我会提出上述映射的注释,所以vim不思你正在输入一个逃生,然后是一堆空格或制表符(这会根据你所在的位置以一种看起来随机的方式将光标向前移动)。

" map jj to escape key 
ino jj <Esc> 

要检查,看看问题是否确实是你的vimrc文件的格式,你可以只在EX提示符下键入这个,看看它是否修复该问题当前会话。

ino jj <Esc> 

如果这样做,你的“JJ”测绘工作正常后,那么它可能什么我描述了一些变化。要验证vimrc文件的格式,通过在ex命令提示符下键入以下代码来搜索空格字符(设置hlsearch会打开突出显示和/ \搜索空白,管道按顺序执行它们)。

set hlsearch | /\s 

在旁注中。你可以做的一个很好的诀窍是按照一个空间和一个评论的映射。这会让你置身于你正在编辑的位置之上。新手用户的

ino jj <Esc> " map jj to escape key 

一个抱怨是,他们不喜欢怎么位置移动到人物时,他们击中逃跑,他们正在编辑的左侧。就像如果你在插入模式,你的光标在“H”和“R”字符,这样之间:

one two th|ree 

而且你打逃脱你会在正常模式下过的“H”顶。映射后的空间技巧将使您置身于“r”之上。

+0

我很高兴你回答了这个问题,即使是几年后,这正是我遇到的问题。谢谢! – 2014-02-15 03:56:23

+0

使用空格对齐的内联注释是我的问题,将它们移动到新行可修复延迟响应和随机字符跳转。谢谢! – 2014-10-21 19:19:05