我有从寄存器复制/剪切/粘贴的映射:
nnoremap <c-r><c-c>a "ayy -- copy current line into register a
nnoremap <c-r><c-x>a "add -- cut current line into register a
nnoremap <c-r><c-v>a "ap -- paste from register a
所有其他寄存器和模式也一样。我也有常用的 cc/x/v 映射,用于从未命名的寄存器复制、剪切和粘贴。现在,如果我c-r c-v a快速按下,那么一切都会正常,但如果我按下 cr cv 并暂停思考要使用哪个寄存器,vim 会决定改为对 cv 进行操作(从未命名的寄存器执行粘贴)。
有没有办法让这样的映射在 vim 中不发生冲突?这样当我按 cr cv 时它就不会超时并变成 cv。
在标准键盘映射中,我认为这是通过某种“等待注册字母模式”来实现的。例如,如果我在命令行模式下使用 cr,vim 将显示“并无限期地等待注册字母,在正常模式下按“”时也是如此。
编辑:vim 帮助提到,在正常模式下重新映射 cc 会破坏中断脚本的能力。没错,但使用 cy 等其他工具时,问题仍然存在。
答案1
您要么需要:set notimeout
完全禁用该行为,要么:set timeoutlen=5000
将默认超时时间增加到例如 5 秒。:help map-typing
详情请参阅