Não expanda o mapeamento de linha de comando (cmap) até pressionar enter no vim

3

Eu tenho

cmap w!! %!sudo tee > /dev/null %

no meu .vimrc .

Quando eu digito um w enquanto escrevo na linha de comando do vim (após : ), o cursor permanece acima do w por alguns segundos antes de mover para a direita. Isso às vezes quebra minha linha de pensamento e me confunde por alguns segundos. Existe uma maneira de fazer o mapeamento acontecer ao pressionar enter após o comando para que ele não "coma" temporariamente o w toda vez que eu pressioná-lo?

(Aliás, esse mapeamento também torna w!! expandir quando eu estou digitando uma consulta de pesquisa que não é chata na prática (exceto pelo fato de que w é similarmente atrasada) mas parece estranha.)

    
por Sophie Alpert 05.06.2012 / 19:27

2 respostas

2

Eu apenas tentei:

cabbrev w!! %!sudo tee > /dev/null %

que atrasa a expansão até pressionar espaço ou digitar, mas grava estranhamente o prompt de senha na parte superior da expansão do comando, assim a linha de comando se parece com

Password:ee > /dev/null %

(e funciona corretamente se você ignorar o erro de exibição).

    
por 06.06.2012 / 18:51
0

Você pode alterar esse comportamento com as timeout e timeoutlen opções. Para citar a documentação :

If the 'timeout' option is on (which is the default) Vim will only wait for one second (or as long as specified with the 'timeoutlen' option). After that it assumes that the character is to be interpreted as such.

    
por 23.06.2015 / 14:57

Tags