Vim:映射Esc而不影响终端控制字符

时间:2014-06-08 03:16:24

标签: vim control-characters

我正在尝试映射<Esc>以关闭Vim中的搜索突出显示。问题是终端使用+Esc模拟的密钥会受到影响。

终端发送的字符比我输入的速度快得多。是否有办法在vim中映射键+超时?

4年前提出了同样的问题,答案是无法完成。这(仍然)是真的吗?

Mapping :nohlsearch to escape key

2 个答案:

答案 0 :(得分:2)

是的,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>

答案 1 :(得分:2)

你的麻烦是由一些插件或其他本机vim处理这个罚款引起的。使用vim --noplugin启动vim,或者如果这还不够,请使用vim -u NONE(或gvim -U NONE)和:source绕过您的vimrc:

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>

我从未见过,也无法重现您所描述的干扰,因此我不知道造成这种干扰的原因,我建议您使用二进制搜索插件集。