Ligeiro atraso ao alternar modos no vim usando tmux ou screen

64

Mudar para e do modo de inserção no Vim não é mais instantâneo desde que eu uso o tmux. Depois de pressionar Esc no modo de inserção, leva um tempo perceptível para sair do modo de inserção. Depois de pressionar Esc e qualquer outra tecla, o comutador é imediato e o comando da tecla pressionada após Esc é executado. Alguma ideia do que pode causar isso?

A configuração do Vim não é o problema, pois o atraso não ocorre quando eu executo o Vim fora do tmux, então isso provavelmente está relacionado ao tmux de alguma forma. Eu uso gnome-terminal btw.

Também vale a pena notar, parece que não posso definir ligações de teclas no tmux para Esc , meu plano era vincular Esc a:

bind Escape send-keys ^[

Infelizmente, parece que vincular qualquer coisa ao Esc para o tmux não funciona. O mesmo problema ocorre na tela também.

    
por Ton van den Heuvel 02.03.2011 / 14:06

4 respostas

118

Depois de percorrer as páginas do manual, o tmux tem uma opção para isso. O seguinte em ~/.tmux.conf corrige o problema de atraso:

 set -sg escape-time 0

Você tem que reiniciar seu servidor tmux ou recarregar sua configuração para que isso tenha efeito. Para fazer isso, emita source-file ~/.tmux.conf no prompt do tmux.

    
por 03.03.2011 / 16:19
3

Eu tive um problema diferente, mas semelhante, que eu estava tentando resolver quando encontrei esta página, então vou postar isso aqui, caso seja útil para qualquer outra pessoa que esteja em busca dessa resposta e encontre essa página no mesmo maneira.

Problema: o modo vi no bash tem um atraso ao mudar do modo de inserção para o modo de comando

Solução: No seu arquivo ~/.inputrc , adicione set keyseq-timeout n , em que n é um valor baixo maior que 0. n é 500 ms, que é o que causa o atraso. Veja a documentação aqui .

Além disso, se você quiser saber em qual modo você está, confira Dylan Cali's fork of bash .

    
por 30.12.2016 / 23:16
1

Parece que você está usando um mapeamento que começa com ESC . Quando você pressiona o ESC , o vim tem que esperar para ver se a próxima chave é a que está no mapeamento. Se não for, pode continuar imediatamente.

A configuração do vim pode ser dependente do terminal, então o fato de que isso não acontece fora do tmux não significa muito. O Vim pode consultar a variável de ambiente $TERM e escolher configurações diferentes dependendo de seu valor.

Como os usos do gnome-terminal, AFAIK, xterm como o valor da variável $TERM e tmux usam screen , eu procuraria em todos os seus arquivos de configuração do vim as configurações usadas apenas como $TERM variável é igual a screen . Meu palpite é que algum arquivo de configuração do vim em seu sistema define mapeamentos para manipulação de teclas de seta (aquelas que começam com o caractere ESC ) quando o terminal é screen .

Você pode testá-lo alterando temporariamente a variável $TERM no tmux antes de iniciar o vim. Se o seu shell é bash, chame vim como

TERM=xterm vim

no tmux e veja se o problema persiste. Você não deve usar isso como uma correção, pois pode haver diferenças entre os recursos de terminal do tmux e do xterm, e você pode ter alguns problemas.

    
por 02.03.2011 / 17:11
1

Como o título menciona Tela, aqui está a solução para corrigir o comportamento da tecla Escape dentro do GNU Screen. (Extraído de aqui .)

Adicionar

maptimeout 5

para .screenrc arquivo de configuração.

    
por 29.02.2016 / 17:32