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 tmux
et 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 stty
ré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?
tmux
tous les cas, ou êtes-vous intéressé à déterminer pourquoi cela fonctionne dans le premier exemple mais pas dans le second?Réponses:
Si vous avez
stty -ixon
dans l'initialisation de votre shell, c'est assez simple: lors de latmux
cré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.devrait résoudre votre problème.
la source
Une solution de contournement qui ne nécessite pas de modifier l'
tmux
appel consiste à inclure l'stty
appel dans le fichier$HOME/.zshenv
. Ce fichier est analysé par ZSH et utilisé même pour les shells non interactifs.Les utilisateurs BASH doivent définir la variable d'environnement
BASH_ENV=$HOME/.zshenv
pour que cela fonctionne.la source
.zshrc
et.zshenv
. Attention>
cependant. Utilisation:echo 'stty -ixon' >> ~/.zshenv