Se eu pressionar ESC para sair do Modo Visual depois de selecionar algum texto, haverá um atraso notável antes que o texto seja desmarcado e retorne ao Modo Normal (mesmo se eu selecionar apenas 1-2 caracteres). Esse atraso pode ser evitado?
Se eu pressionar ESC para sair do Modo Visual depois de selecionar algum texto, haverá um atraso notável antes que o texto seja desmarcado e retorne ao Modo Normal (mesmo se eu selecionar apenas 1-2 caracteres). Esse atraso pode ser evitado?
Respostas:
Isso pode ser causado pelo mapeamento para algumas funcionalidades adicionais. Por exemplo, eu uso o plug-in tabbar e ele mapeia de 0 a 9 para mudar para o buffer numérico. Sempre que uma tecla é mapeada para uma funcionalidade adicional como esta, o vim espera alguns segundos depois de ser pressionado para ver se você pressionará alguma tecla adicional.
Para ver se há algum mapeamento adicional, execute :map
e procure <Esc>
na primeira coluna. Quando executado sem nenhum parâmetro, :map
listará todos os mapeamentos personalizados. Se você deseja listar apenas os mapeamentos no modo visual, execute :vmap
.
Se houver mapeamentos adicionais, não sei como remover a pausa, além de removê-los. A pausa é necessária para que o vim saiba inequivocamente qual ação você pretende que ela execute.
:help 'timeout'
.
Não tenho nenhum mapeamento vinculado ao <ESC> globalmente ou para o modo Visual (chamar: vmap detalhado <ESC> não fornece resultados), mas ainda há um atraso significativo ao sair do modo Visual. Mesmo em instalações novas sem vimrc, o atraso está presente. O uso de <Cc> sai do modo visual sem demora.
Como não gosto de pressionar <Cc> para sair de nenhum modo, atualmente mapeio <ESC> para <Cc> no modo visual. Isso sai do modo visual usando <ESC> sem demora.
:vmap <ESC> <C-c>
Ou coloque a seguinte linha no seu vimrc
vnoremap <ESC> <C-c>
Isso não funcionará se você tiver mapeamentos de modo global ou visual vinculados a <ESC>.
Esc
também é o prefixo de todas as teclas especiais, inclusive as teclas de seta.