我正在尝试映射<Esc>
以关闭 Vim 中的搜索突出显示。问题是终端模拟的键+Esc
受到影响。
终端发送字符的速度比我输入的快得多。有没有办法在vim中映射键+超时?
4年前问过同样的问题,答案是做不到。这(仍然)是真的吗?
我正在尝试映射<Esc>
以关闭 Vim 中的搜索突出显示。问题是终端模拟的键+Esc
受到影响。
终端发送字符的速度比我输入的快得多。有没有办法在vim中映射键+超时?
4年前问过同样的问题,答案是做不到。这(仍然)是真的吗?
您的麻烦是由某些插件或其他引起的,本机 vim 可以很好地处理这个问题。用 启动 vim vim --noplugin
,或者如果这还不够,那么用vim -u NONE
(or gvim -U NONE
) 绕过你的 vimrc 并且:source
这个:
set nocp " life's too short for pure vi-compatibility mode
set timeout ttimeout " enable separate mapping and keycode timeouts
set timeoutlen=250 " mapping timeout 250ms (adjust for preference)
set ttimeoutlen=20 " keycode timeout 20ms
nno <ESC> :nohls<CR>
我从未见过也无法重现您所描述的干扰,所以我不知道是什么原因造成的,我只能建议使用您的插件集进行二进制搜索。
是的,由于 ZyX 在他的回答中给出的原因,这仍然是不可能的。
<Esc>
是“特殊的”,因为它的行为介于“普通”键a
(您可以将其映射到您想要的任何内容)和修饰键(终端使用它来表示许多特殊键,例如<Up>
)之间。
安全地映射<Esc>
以做任何其他/超出可能的事情<Esc>
,但您必须使用noremap
所有受影响的键。这是我vimrc
减轻这种副作用的方法:
nnoremap <Esc>A <up>
nnoremap <Esc>B <down>
nnoremap <Esc>C <right>
nnoremap <Esc>D <left>
inoremap <Esc>A <up>
inoremap <Esc>B <down>
inoremap <Esc>C <right>
inoremap <Esc>D <left>