In meiner Shell habe ich die Flusskontrolle mit deaktiviert stty -ixon
. Dies funktioniert perfekt in der Shell und wenn ich tmux
Programme darin starte und starte
tmux
.
Wenn Sie jedoch eine neue Sitzung über die Befehlszeile starten und einen Befehl direkt starten, wird die Einstellung für die Flusssteuerung nicht berücksichtigt und ctrl-sdas Terminal wird eingefroren.
Das funktioniert:
tmux new-session -s foo
vim
Dies gilt nicht für die stty
Einstellung der Durchflussregelung:
tmux new-session -s foo vim
Wie kann ich die Flusskontrolle auch im letzteren Fall deaktivieren?
tmux
allen Fällen insgesamt zu deaktivieren , oder möchten Sie herausfinden, warum dies im ersten Beispiel funktioniert, nicht aber im zweiten?Antworten:
Wenn Sie
stty -ixon
die Initialisierung Ihrer Shell durchgeführt haben, ist dies recht einfach: Wenn Sietmux
neue Terminals erstellen, wird standardmäßig die Standard-Shell des Benutzers ausgeführt, wodurch der Kontrollfluss während der Initialisierung deaktiviert wird. Wenn Sie tmux jedoch auffordern, einen bestimmten Befehl auszuführen (in Ihrem Fall ViM), findet keine Initialisierung statt und die Standard-Terminaleinstellungen (Flusssteuerung aktiviert) gelten.sollte Ihr Problem beheben.
quelle
Eine Problemumgehung, bei der der
tmux
Anruf nicht geändert werden muss , besteht darin, denstty
Anruf in die Datei aufzunehmen$HOME/.zshenv
. Diese Datei wird von ZSH analysiert und auch für nicht interaktive Shells verwendet.BASH-Benutzer müssen die Umgebungsvariable festlegen
BASH_ENV=$HOME/.zshenv
, damit dies funktioniert.quelle
.zshrc
und hinzu.zshenv
. Sei aber vorsichtig damit>
. Verwenden Sie:echo 'stty -ixon' >> ~/.zshenv