tmux não respeitando o fluxo de controle desativado

8

No meu shell, eu tenho o controle de fluxo desativado usando stty -ixon . Isso funciona perfeitamente no shell e quando eu lançar tmux e iniciar programas dentro tmux .

No entanto, ao iniciar uma nova sessão a partir da linha de comando e diretamente ao iniciar um comando, a configuração de controle de fluxo não é respeitada e ctrl-s congela o terminal.

Isso funciona:

tmux new-session -s foo
vim

Isso não respeita a configuração de controle stty do fluxo:

tmux new-session -s foo vim

Como posso desabilitar o controle de fluxo mesmo no último caso?

    
por Marco 13.05.2013 / 23:56

2 respostas

5

Se você tem stty -ixon na inicialização do seu shell, é bastante simples: quando tmux cria novos terminais, ele executa o shell padrão do usuário por padrão e isso, por sua vez, desativa o fluxo de controle durante a inicialização. No entanto, quando você solicita ao tmux que execute um comando específico (ViM no seu caso), nenhuma inicialização ocorre e as configurações padrão do terminal (controle de fluxo ativado) se aplicam.

tmux new-session -s foo "stty -ixon; vim"

deve corrigir seu problema.

    
por 15.05.2013 / 00:16
4

Uma solução alternativa que não requer a alteração da chamada tmux é incluir a chamada stty no arquivo $HOME/.zshenv . Este arquivo é analisado pelo ZSH e usado até mesmo para shells não interativos.

echo 'stty -ixon' | tee -a ~/.zshenv
# ... or ...
echo 'stty -ixon' >> ~/.zshenv

Os usuários do BASH precisam definir a variável de ambiente BASH_ENV=$HOME/.zshenv para que isso funcione.

    
por 15.05.2013 / 00:58