Wenn ich einen Befehl mit viel Ausgabe in tmux ausführe, ihn aber mit Strg-C abbrich, gibt es eine Verzögerung von 10-15 Sekunden, bevor er stoppt. Wenn ich jedoch das Gleiche außerhalb von tmux mache, wird es sofort beendet. Warum ist das so und ist es reparabel?
In der Praxis tritt dieses Problem auf, wenn ich grep -R
in einem großen Verzeichnis arbeite und meine Suche nicht ausreichend eingeschränkt ist. Eine Problemumgehung wäre, das Ergebnis wc
zuerst weiterzuleiten, um sicherzustellen, dass die Ausgabe nicht zu lang ist, aber das ist nur ein weiterer Schritt, den ich vermeiden möchte.
Anmerkungen:
- Dies hat dasselbe Verhalten in Gnome Terminal, uxterm, st und einem einfachen virtuellen Terminal (z. B. Strg-Alt-F2), jedoch ist die Verzögerung im einfachen virtuellen Terminal geringer.
- Ich bin nicht der einzige: http://www.mail-archive.com/[email protected]/msg01569.html
- Die Verzögerung ist länger, wenn mein Terminalfenster größer ist. Bei einem Vollbild-Terminal dauert es ungefähr 15 Sekunden, um
grep -R
in einem überfüllten Ausgangsverzeichnis anzuhalten (keine anderen Argumente). Bei einem Terminal mit 80 × 25 Zeichen stoppt es fast sofort.
grep -R "a" ~/
(nicht in die Datei zu schreiben) ... undyes | nl | cut -f1 | head -9999999 > ~/file
danncat ~/file
.Antworten:
tmux hat jetzt folgende Möglichkeiten:
Sie können Werte für diese festlegen, wodurch die Eingabe für ^ C und Freunde einfacher wird. Siehe
man tmux
:quelle
setw -g c0-change-trigger 10
setw -g c0-change-interval 250
>> ~ / .tmux.confSie können den
kill-pane
Befehl immer innerhalb der Sitzung ausgeben . Wenn der Terminal-Text wie Müll aussieht, sollte das Umbenennen des Fensters und / oder das Ausgebenreset
behoben werden.quelle
Da
tmux
er sich zwischen dencat
Prozess und Ihr Terminal einfügt , muss er die Ausgabe von lesencat
, in das Terminal schreiben und gleichzeitig Ihre Eingabe vom Terminal lesen (das ^ C) und an die Shell senden, um das zu unterbrechen Befehl. Ich bin nicht sicher, was genau die Verzögerung verursacht, aber es geht darum, wie dietmux
E / A zwischen Ihnen und der Shell, die ausgeführt wird, gepuffert werdentmux
.quelle
Angenommen, Sie verwenden ssh über eine Verbindung mit geringer Latenz, haben Sie versucht, mosh zu verwenden ? Neben anderen sehr nützlichen Dingen wie der Eingabevorhersage sowie dem Überleben von Verbindungsabbrüchen und sogar einer sich ändernden IP auf der Clientseite wird auch die Reaktionszeit bei Verwendung von Strg-C verbessert (indem nur der Terminalinhalt regelmäßig aktualisiert wird, anstatt den gesamten Stream zu senden). .
Sie können
tmux
innerhalbmosh
ohne Probleme verwenden.quelle
Ich hatte dieses Problem mit tmux 2.3. Ich habe versucht, die Optionen c0-change-interval und c0-change-trigger wie oben beschrieben einzustellen, aber sie sind nicht mehr verfügbar. Hier ist die Git-Änderung mit der neuen versuchten Lösung: https://github.com/tmux/tmux/commit/3f4ee98162cd5bb7000f93fec0e631e123b1281d
Durch das Zurücksetzen auf tmux 1.8 konnte das Problem behoben werden, ohne dass Optionen festgelegt werden mussten.
quelle