tmux respektiert den deaktivierten Steuerungsfluss nicht


8

In meiner Shell habe ich die Flusskontrolle mit deaktiviert stty -ixon. Dies funktioniert perfekt in der Shell und wenn ich tmuxProgramme 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 sttyEinstellung der Durchflussregelung:

tmux new-session -s foo vim

Wie kann ich die Flusskontrolle auch im letzteren Fall deaktivieren?


Reicht es aus, die Flusskontrolle in tmuxallen Fällen insgesamt zu deaktivieren , oder möchten Sie herausfinden, warum dies im ersten Beispiel funktioniert, nicht aber im zweiten?
slm

@slm Zunächst möchte ich es reparieren lassen. Trotzdem interessiert mich, warum sich tmux so verhält wie es ist.
Marco

Antworten:


5

Wenn Sie stty -ixondie Initialisierung Ihrer Shell durchgeführt haben, ist dies recht einfach: Wenn Sie tmuxneue 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.

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

sollte Ihr Problem beheben.


5

Eine Problemumgehung, bei der der tmuxAnruf nicht geändert werden muss , besteht darin, den sttyAnruf in die Datei aufzunehmen $HOME/.zshenv. Diese Datei wird von ZSH analysiert und auch für nicht interaktive Shells verwendet.

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

BASH-Benutzer müssen die Umgebungsvariable festlegen BASH_ENV=$HOME/.zshenv, damit dies funktioniert.


2
Ich weiß nicht, was es tut, aber es hat den Trick getan. Fügte es beiden .zshrcund hinzu .zshenv. Sei aber vorsichtig damit >. Verwenden Sie:echo 'stty -ixon' >> ~/.zshenv
Firedev
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.