Por que o vim demora por um segundo sempre que eu uso o comando 'O' (abre uma nova linha acima e insere)?

21

Quando uso a maioria dos comandos, eles entram em vigor instantaneamente. Quando eu uso o comando O , no entanto, vejo o "O" substituir o caractere atual por cerca de um segundo, depois o caractere atual retorna e uma nova linha é inserida e aberta.

Eu não tenho esse problema com o comando o (abra uma nova linha abaixo e insira).

Se isso faz diferença, estou usando vim de bash no Terminal Gnome no Ubuntu 10.04.

    
por Matthew 08.07.2010 / 06:00

1 resposta

23

Se a tecla anterior pressionada era ESC, isso ocorre porque existem chaves que podem gerar seqüências de escape começando com ESC O. Por exemplo, dependendo do modo da tecla de cursor, a tecla de seta para cima pode gerar a seqüência de escape ESC O A.

Se ele vir uma seqüência de escape parcial, o vim esperará por um tempo limite curto para ver se outro caractere recebido corresponde a uma das seqüências de escape definidas para o seu tipo de terminal. Se não, tratará os caracteres como teclas separadas. Você pode testar isso inserindo uma letra maiúscula A enquanto aguarda a linha abrir para ver se ela é tratada como uma seta para cima.

Existem algumas configurações de vim que podem ser usadas para controlar isso. :set ttimeoutlen=100 alterará o tempo limite da sequência de escape para 100 ms. :set noesckeys desativará completamente o reconhecimento de chaves que enviam uma seqüência de escape quando no modo de inserção. Além disso, o modo compatível com o vi não terá esse problema porque as teclas estão desativadas nesse modo - é por isso que vim -u NONE funciona.

    
por 08.07.2010 / 09:02