Por que o mapeamento <ESC> inicia a linha de comando Vim no modo Substituir?

3

Eu estava tendo um problema em que iniciar o Vim a partir da linha de comando estava começando no modo de substituição. Eu finalmente reduzi a esta linha na minha configuração:

nnoremap <ESC>         :noh<return><ESC>

Se eu mudar a chave para outra coisa que não seja nnoremap <space><space><space>(apenas para testar ... eu nunca deixaria assim), eu não vejo o comportamento. Se eu usar o MacVim em vez da linha de comando Vim, também não o vejo. Estou usando o iTerm 2 com xterm-256colorterminal e zsh como meu tipo de shell, já que parece ser relevante.

Alguém tem uma idéia do que eu deveria estar olhando para solucionar isso? A resposta é, obviamente, bem-vinda, mas se você também puder compartilhar onde eu deveria estar pensando sobre esse problema, isso pode me ajudar a solucionar problemas semelhantes no futuro.

Obrigado!

jxpx777
fonte

Respostas:

1

As seqüências ANSI Escape usadas pelo terminal começam com Escape ( ^[), e como o Vim está usando essas para se comunicar com o terminal, fica confuso quando você mapeia <Esc>. É também por isso que não há problemas no MacVim (e no GVIM); aqueles que não usam o terminal e têm diferentes canais de E / S.

Mapeamento <Esc>no terminal O Vim está apenas procurando por problemas; por favor, basta escolher outra chave.

Ingo Karkat
fonte