为什么vnoremap a A需要几秒钟才能完成?

tga*_*tga 1 vim editor neovim

我在配置文件中有这个:

nnoremap a a
vnoremap a A
Run Code Online (Sandbox Code Playgroud)

并在视觉模式下按a需要2秒钟才能执行操作

为什么会这样?这是一种不好的做法吗?

Stu*_*ick 6

这个问题是由于您有一些以"a"开头的其他映射(在可视模式或所有模式下)的事实.

想象一下,我在.vimrc中映射了2个不同的命令(或者你称之为配置文件)

vnoremap a a
vnoremap ab D.

在这里,当我在视觉模式下按'a'时,我希望它附加文字.当我按'ab'时,我希望它为我删除一行.

我现在伸手去拿我的键盘然后按'ab'.vim如何知道我想删除一行而不只是在文本中附加字母'b'?两者都需要相同的按键.

所以为了区别对待,当我点击'a'键时,vim会等待一秒钟看看我选择哪个命令,如果我快速按下'b',它会发现这实际上是指令'ab',意思是'D'这意味着删除.

如果我按'a'并等待一秒钟,vim将接受我发出的指令'a',意思是'A'表示追加.然后我点击'b',字母'b'被附加到文本中.

如果你想要它停止,你将不得不通过你的.vimrc并将你的映射更改为不重叠(以相同的字母开头),或者你可以键入 :h leader vim并了解mapleaders,这将使它更容易为你计划你的映射.我亲自将我的枫木设置为空间,但许多人也喜欢使用逗号或其他一些他们选择的钥匙.

tldr:Vim正在等待一秒钟,看你是否要按另一个键并发出不同的命令