Vim - atraso ao sair do modo visual

8

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?


fonte

Respostas:

2

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 :mape procure <Esc>na primeira coluna. Quando executado sem nenhum parâmetro, :maplistará 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.

cledoux
fonte
11
Nos terminais do tipo VT100 (incluindo o terminal Xterm / Rxvt / PuTTY / GNOME), Esctambém é o prefixo de todas as teclas especiais, inclusive as teclas de seta.
user1686
@ grrawity: True, mas o Vim usa valores de tempo limite diferentes para essas seqüências de escape do que para mapeamentos, portanto, o tratamento dessas seqüências de escape geralmente não causa o problema relatado aqui. Veja :help 'timeout'.
garyjohn
Obrigado, é isso. Agora só preciso descobrir quais são os mapeamentos que estão interferindo no meu uso.
0

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>.

lohfu
fonte
-2

O que você pode fazer ainda é usar CTRL+ Cpara sair do modo Visual. Isso deve evitar o atraso.

Florian
fonte