首页 > 解决方案 > 维姆10j 的键绑定将光标向右移动

问题描述

我最近映射10j<A-j>10k<A-k>,这看起来很神奇,但它有一个问题:

当我通常键入时10j(不使用快捷方式),它只会垂直向下移动 10 行,但根本不会水平移动(假设行的长度相同),但是当我使用<A-j>它时(好吧,有趣的是,并不总是, 但大多数情况下)也将一个字母向右移动。

有趣的是,这仅发生在<A-j>, 而<A-k>按预期工作。我怎样才能防止这种情况?也许最重要的是:为什么会这样?

如果有帮助,这些是我的其他键绑定:

nnoremap K K<C-w>L
nnoremap <A-h> :set hls!<cr>
nnoremap / :set hlsearch<cr>/
nnoremap <A-j> 10j 
nnoremap <A-k> 10k
nnoremap <A-w> W
nnoremap <A-b> B
nnoremap <A-v> V
nnoremap <A-m> '
nnoremap <A-p> "+p
nnoremap <A-y> "+y
nnoremap <A-4> $
nnoremap <A-3> 0
nnoremap Y y$

vnoremap <A-h> :set hls!<cr>
vnoremap / :set hlsearch<cr>/
vnoremap <A-j> 10j
vnoremap <A-k> 10k
vnoremap <A-w> W
vnoremap <A-b> B
vnoremap <A-v> V
vnoremap <A-m> '
vnoremap <A-p> "+p
vnoremap <A-y> "+y
vnoremap <A-4> $
vnoremap <A-3> 0

是的,我非常喜欢alt键。

标签: vim

解决方案


您的映射末尾有一个尾随空格字符:

:nnoremap <A-j>
n  <M-j>       * 10j<Space>

<Space>l与;是相同的命令 它将一个字符向右移动(如果可能)。

映射中的右侧按字面意思表示(直到行尾或|命令分隔符)。另一个常见错误是将 a 添加" comment到映射定义中。

插件推荐

如果您经常偶然发现尾随空格(它在许多编码风格中通常不受欢迎,并且 Git 等工具也会将其突出显示为有问题的),我的ShowTrailingWhitespace 插件可以提醒您这些,DeleteTrailingWhitespace 插件可以为您删除它们。(插件页面有其他插件的链接。)


推荐阅读