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?

Marco
quelle
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.

Peterph
quelle
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.

Marco
quelle
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