Verwenden Sie Mosh, ohne auf lokale Scrollback / Geschichte zu verzichten?


63

Gibt es eine Möglichkeit zu verwenden, moshohne auf den lokalen Scrollback zu verzichten?

Grundsätzlich ist IP-Roaming unter bestimmten Umständen in der Tat nützlich und erforderlich, aber die zusätzliche Terminalemulation und die Schlüsselvorhersage scheinen nur die lokalen Scrollback-Pufferzeilen und den Sitzungsverlauf zu beseitigen.


Antworten:


43

Filippo Valsorda hat eine Lösung für OS X, die iTerm 2, tmux und mosh enthält .

Seine Lösung verwendet ein einzelnes Fenster / eine einzelne Registerkarte, um eine Verbindung zu einer Remote-Shell herzustellen. Die Shell überlebt Unterbrechungen (z. B. Verbindungsfehler, IP-Änderungen, Neustart des Laptops) und unterstützt das Zurückscrollen mit einem Touchpad, Copy-Paste und Farben.

Vorsichtsmaßnahmen sind, dass Sie Mosh aus dem Quellcode erstellen müssen, das Scrollen weniger flüssig als nativ ist und das Klicken und Ziehen weitergeleitet wird, sodass Sie die Option gedrückt halten müssen, um auszuwählen.

  • iTerm

    Aktivieren Sie in den Terminalprofileinstellungen die xterm-Maus-Berichterstellung und setzen Sie den Berichtsterminaltyp auf xterm-256color .

  • tmux

    Stellen Sie ~/.tmux.confauf dem Server Folgendes ein. Wenn Sie mit diesen Einstellungen versuchen, eine Verbindung herzustellen, und keine Sitzungen vorhanden sind, wird eine neue erstellt. Die Einstellungen ermöglichen auch Mausinteraktionen (und damit das Scrollen mit dem Touchpad).

    new-session
    set-window-option -g mode-mouse on
    set -g history-limit 30000
    

    Hinweis: In neueren Versionen von tmux (dh> 2.1) wurden tmux -Vdie verschiedenen Mausoptionen ( Maus-Größenänderungsfenster, Mausmodus usw.) in eine einzige Option umgeschrieben mouse, sodass Sie die zweite Zeile ändern müssen oben stattdessen mit der set-window-option -gMauson .

    Dieses Scrollen mit der Maus funktioniert auch, wenn Sie sich im Tastatur-Scroll-Modus befinden (z. B. Ctrl- bthen [), wie im Artikel Scrollen in tmux beschrieben .

  • mosh

    Die stabile Version von mosh ist veraltet und unterstützt keine Mausberichte (und kein Scrollen mit dem Touchpad). Führen Sie die folgenden Schritte aus, um die neueste Version zu installieren:

    OS X (Ihr Client)

    brew install --HEAD mobile-shell
    

    Linux / UNIX (der Server)

    git clone https://github.com/keithw/mosh.git
    cd mosh/
    sudo apt-get build-dep mosh
    ./autogen.sh && ./configure && make
    sudo make install
    

Um eine Verbindung herzustellen, geben Sie einfach Folgendes ein:

mosh HOST -- tmux a

5
Es wird als gute Form angesehen, die wichtigen Informationen aus dem Link in die Zeile einzufügen.
HalosGhost

2
Obwohl diese Antwort aus technischen Gründen abgelehnt wurde, ist es wahrscheinlich die beste (einzige?) Möglichkeit, mit mosh einen anständigen Scrollback auf dem lokalen Client zu erhalten.
Jayhendren

@jayhendren: oder du kannst einfach Eternal Terminal benutzen .
Dan Dascalescu

Keine Notwendigkeit, herablassend zu sein. Mein Kommentar war aus dem Jahr 2014. Die erste Veröffentlichung von Eternal Terminal war im Jahr 2017.
Jayhendren

15

Die Terminal-Emulation ist ziemlich tief im Design von mosh verankert , also nein. Mosh sorgt dafür, dass sowohl der Client als auch der Server ihre lokale Vorstellung davon behalten, wie der Bildschirm derzeit "aussieht". Dazu muss der Server eine Terminalemulation durchführen. Auf diese Weise kann der Client den Inhalt des Bildschirms aktualisieren, nachdem er für eine Weile abwesend war und einige Daten verloren hat.

Ich denke, dass eine Anwendung mit der IP-Roaming-Funktion von mosh, jedoch ohne Terminalemulation, eine ganz andere (aber einfachere) Anwendung wäre. Bei einer solchen Anwendung würde ein Datenverlust (auch wenn der Client einige Zeit nicht im Netz ist) zu einem Verlust oder einer Beschädigung des Bildschirminhalts führen. Dies ist eine akzeptable Einschränkung, wenn der Benutzer eine Anwendung verwendet, bei der dies keine Rolle spielt (z. B. Shell) oder eine Anwendung, die eine Repaint-Funktion aufweist (z. B. viControl-L).

Die Implementierer von Mosh planen jedoch eine Scrollback-Unterstützung in der Anwendung , um die Tatsache auszugleichen, dass Ihr lokales Terminal dies nicht mehr kann. Ich denke, dies müsste ein bisschen wie screender Scrollback-Puffer von funktionieren : gesteuert durch Tastenanschläge, nicht durch Bildlaufleiste und Maus.


4

Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) ist eine Alternative zu Mosh, die natives Scrollback unterstützt und weiterhin IP-Roaming ermöglicht. ET macht keine Tippvorhersage, daher ist es möglicherweise nicht geeignet, wenn Sie eine Verbindung mit hoher Latenz haben (wenn Sie in eine Drohne oder von einem Mobiltelefon aus ssh-en), aber persönlich macht ET alles, was ich will, und unterstützt das Zurückscrollen.


das war großartig
Soorena

ET ist unglaublich und braucht viel mehr Fürsprache .
Dan Dascalescu

1

Das Deaktivieren des Kontrollkästchens "Alternativer Bildschirm scrollen" unter "Terminal" -> "Einstellungen" -> "Profile" -> "Tastatur" hat das Problem für mich behoben.


1
diese antwort macht keinen sinn, wo bekommst du überhaupt so ein menü?
24.

3
Diese Voreinstellungen sind vorhanden, aber das Deaktivieren hat dazu geführt, dass das Scrollen nur in meinem lokalen Fenster funktioniert. Das heißt, beim Scrollen nach unten wurden die Zeilen angezeigt, die vor der Verwendung des Befehls mosh vorhanden waren. Es zeigte mir nichts, was vom oberen Rand der Remote-Sitzung gescrollt war.
9.

2
Versuchte dies, aber es ermöglicht Ihnen nicht, in der Mosh-Sitzung zu scrollen
magodiez
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.