O mapeamento Esc é sempre um pouco complicado e geralmente convida a esse tipo de problema, mesmo que não deva acontecer.
O método "canônico" para o seu mapeamento é:
nnoremap <silent> <C-l> :nohlsearch<CR><C-l>
Dessa forma, o Ctrl + L (que normalmente redesenha sua tela) deixará de destacar e redesenhar a tela.
Acho que descobri o que acontece, mas ainda não tenho solução. Assumi que o Vim recebeu uma string contendo <ESC>
e "2c", então usei o seguinte mapeamento para torná-lo visível:
nnoremap <Esc> :"
Isso resultou no seguinte prompt na inicialização:
:"[>0;261;0c
O que significa que algo enviou <ESC>[>0;261;0c
na inicialização. Agora, pesquisando as xterm
seqüências de controle originais, descobrimos que:
ESC [ Control Sequence Introducer (CSI is 0x9b)
e
CSI > P s c
Send Device Attributes (Secondary DA).
P s = 0 or omitted → request the terminal’s identification code. The response depends on the decTerminalID resource setting. It should apply only to VT220 and up, but xterm extends this to VT100.
→ CSI > P p ; P v ; P c c
where P p denotes the terminal type
P p = 0 → ‘‘VT100’’.
P p = 1 → ‘‘VT220’’.and P v is the firmware version (for xterm, this was originally the XFree86 patch number, starting with 95). In a DEC terminal, P c indicates the ROM cartridge registration number and is always zero.
Então, no meu caso, algo envia CSI >
com P p = 0 (→ terminal tipo VT100), P v = 261 (→ meu xterm
version) e P c = 0.
Ainda não tenho ideia de onde vem ou como pará-lo. Meu melhor palpite é que alguma troca de informações entre o terminal e o Vim falhe e algo esteja ligado.