tmux ne respecte pas le flux de contrôle désactivé

8

Dans mon shell, le contrôle de flux est désactivé à l'aide de stty -ixon. Cela fonctionne parfaitement dans le shell et lorsque je lance tmuxet démarre des programmes à l'intérieur tmux.

Cependant, lors du démarrage d'une nouvelle session à partir de la ligne de commande et du lancement direct d'une commande, le paramètre de contrôle de flux n'est pas respecté et ctrl-sfige le terminal.

Cela marche:

tmux new-session -s foo
vim

Cela ne respecte pas le sttyréglage du contrôle de flux:

tmux new-session -s foo vim

Comment puis-je désactiver le contrôle de flux même dans ce dernier cas?

Marco
la source
Est-il suffisant de désactiver le contrôle de flux tous ensemble dans tmuxtous les cas, ou êtes-vous intéressé à déterminer pourquoi cela fonctionne dans le premier exemple mais pas dans le second?
slm
@slm En premier lieu, j'aimerais le faire réparer. Néanmoins, je me demande pourquoi tmux se comporte comme il le fait.
Marco

Réponses:

5

Si vous avez stty -ixondans l'initialisation de votre shell, c'est assez simple: lors de la tmuxcréation de nouveaux terminaux, il exécute le shell par défaut de l'utilisateur par défaut et qui à son tour désactive le flux de contrôle lors de l'initialisation. Cependant, lorsque vous demandez à tmux d'exécuter une commande spécifique (ViM dans votre cas), aucune initialisation n'a lieu et les paramètres de terminal par défaut (contrôle de flux activé) s'appliquent.

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

devrait résoudre votre problème.

peterph
la source
5

Une solution de contournement qui ne nécessite pas de modifier l' tmuxappel consiste à inclure l' sttyappel dans le fichier $HOME/.zshenv. Ce fichier est analysé par ZSH et utilisé même pour les shells non interactifs.

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

Les utilisateurs BASH doivent définir la variable d'environnement BASH_ENV=$HOME/.zshenvpour que cela fonctionne.

Marco
la source
2
Je ne sais pas ce que ça fait, mais ça a fait l'affaire. Ajouté à la fois à .zshrcet .zshenv. Attention >cependant. Utilisation:echo 'stty -ixon' >> ~/.zshenv
firedev