我在vim中遇到过一些奇怪的行为。我做了这个映射:
execute "set <A-j>=\ej"
execute "set <A-k>=\ek"
noremap <A-j> <C-e>
noremap <A-k> <C-y>
但现在当我使用<A-j>
或<A-k>
时,光标会向右移动!当我刚刚使用<C-e>
或<C-y>
时,它不会这样做。
这是一个错误还是一些奇怪的功能?
答案 0 :(得分:1)
以下是您发布的Vim代码:
execute "set <A-j>=\ej"
execute "set <A-k>=\ek"
noremap <A-j> <C-e>
noremap <A-k> <C-y>
如果您复制/粘贴它,或者您编辑此帖子(或您的帖子)并转到<A-j>
行的末尾,您会发现那里有一个尾随空格。这很重要,因为在Vim的正常模式下,按 Space 会将光标向右移动一个位置。
在粘贴时使用此代码,我可以重现问题,尽管我的光标向右移动,而不是如您所述向左移动。地图以 Ctrl e Space 执行,它会将视口向下滚动一行,然后将光标向前移动一个字符。
您的问题描述光标移动到左侧,而不是右侧。您在编写问题时可能只是左右混淆,但您.vimrc
中有嵌入式退格(Ctrl-H
或{{Delete
的情况也是可能的。 1}})行尾的字符。这会产生向后移动(左)一个字符的效果,就像 Space 前进(右)一个字符一样。