Używać Mosh bez rezygnacji z lokalnego przewijania / historii?


62

Czy istnieje sposób użycia moshbez rezygnacji z lokalnego przewijania?

Zasadniczo w niektórych okolicznościach roaming IP jest rzeczywiście przydatny i potrzebny, ale dodatkowa emulacja terminala i przewidywanie klucza wydaje się pozbywać tylko lokalnych linii bufora przewijania i historii sesji.


Odpowiedzi:


42

Filippo Valsorda ma rozwiązanie dla OS X, które obejmuje iTerm 2, tmux i mosh .

Jego rozwiązanie wykorzystuje pojedyncze okno / kartę do połączenia ze zdalną powłoką. Powłoka przetrwa rozłączenia (np. Awaria połączenia, zmiany adresu IP, ponowne uruchomienie laptopa) i obsługuje przewijanie za pomocą touchpada, kopiowanie-wklejanie i kolory.

Zastrzeżeniem jest to, że musisz zbudować mosh ze źródła, przewijanie jest mniej płynne niż natywne, a przeciąganie klikaniem jest przekazywane, więc musisz przytrzymać Option, aby wybrać.

  • iTerm

    W ustawieniach Profilu terminala włącz raportowanie myszy xterm i ustaw Raportuj typ terminala na xterm-256color .

  • tmux

    Ustaw ~/.tmux.confna serwerze następujące ustawienia. Przy tych ustawieniach, jeśli spróbujesz dołączyć i nie ma sesji, tworzona jest nowa. Ustawienia umożliwiają także interakcję myszy (a tym samym przewijanie touchpada).

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

    Uwaga: W nowszym tmuxie (tj.> 2.1), zgodnie z raportem tmux -V, różne opcje myszy (panel zmiany rozmiaru myszy, tryb myszy itp.) Zostały przepisane na jedną opcję mouse, więc musisz zmienić drugą linię powyżej set-window-option -gmyszyon zamian.

    To przewijanie myszą działa również w trybie przewijania klawiatury (np. Ctrl- bwtedy [), opisanym w artykule Jak przewijać w tmux .

  • mosh

    Stabilna wersja mosh jest stara i nie obsługuje raportowania myszy (ani przewijania touchpada). Aby zainstalować najnowszą wersję, wykonaj następujące czynności:

    OS X (twój klient)

    brew install --HEAD mobile-shell
    

    Linux / UNIX (serwer)

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

Teraz, aby się połączyć, wystarczy wpisać:

mosh HOST -- tmux a

5
Uznaje się za dobrą formę wklejania ważnych informacji z linku w linii.
HalosGhost

2
chociaż odpowiedź ta została odrzucona ze względów technicznych, jest to prawdopodobnie najlepszy (tylko?) sposób na uzyskanie przyzwoitego przewijania na lokalnym kliencie za pomocą mosh.
jayhendren

@jayhendren: lub możesz po prostu użyć Eternal Terminal .
Dan Dascalescu

Nie musisz być protekcjonalny. Mój komentarz pochodzi z 2014 roku. Pierwsze wydanie Eternal Terminal miało miejsce w 2017 roku.
jayhendren

15

Emulacja terminalu jest głęboko osadzona w projekcie mosh , więc nie. Mosh działa tak, że zarówno klient, jak i serwer utrzymują lokalny obraz tego, jak ekran obecnie „wygląda”, a to wymaga emulacji terminala przez serwer. W ten sposób klient jest w stanie odświeżyć zawartość ekranu, gdy nie ma go przez pewien czas i utracił część danych.

Myślę, że aplikacja z funkcją roamingu IP mosh, ale bez emulacji terminala, byłaby zupełnie inną (ale prostszą) aplikacją. W przypadku takiej aplikacji utrata danych (w tym gdy klient jest przez pewien czas odłączony od sieci) spowoduje utratę lub uszkodzenie zawartości ekranu. Jest to dopuszczalne ograniczenie, jeśli użytkownik korzysta z aplikacji, w której nie ma to większego znaczenia (np. Powłoka) lub aplikacji, która ma funkcję odmalowywania (np. viUżywając Control-L).

Implementatorzy Mosh planują jednak obsługę przewijania w aplikacji , aby zrekompensować fakt, że lokalny terminal nie może już tego zrobić. Myślę, że musiałoby to działać trochę jak screenbufor przewijania: kontrolowany przez naciśnięcia klawiszy, a nie pasek przewijania i mysz.


4

Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) to alternatywa dla Mosh, która obsługuje natywne przewijanie i nadal umożliwia roaming IP. ET nie wykonuje przewidywania pisania, więc może nie być odpowiednie, jeśli masz połączenie z dużym opóźnieniem (jeśli łączysz się z dronem lub z telefonu komórkowego), ale osobiście ET robi wszystko, co chcę i obsługuje przewijanie.


to było niesamowite
Soorena

ET jest niesamowity i potrzebuje dużo więcej poparcia .
Dan Dascalescu

1

Odznaczenie „Przewiń ekran alternatywny” w Terminalu> Preferencje-> Profile-> Klawiatura naprawiło to dla mnie.


1
ta odpowiedź nie ma sensu, skąd w ogóle takie menu?
cnst

3
To ustawienie wstępne istnieje, ale odznaczenie go spowodowało, że przewijanie działało tylko w moim lokalnym oknie, tzn. Przewijanie w dół wyświetlało linie, które były tam, zanim użyłem polecenia mosh. nie pokazało mi niczego, co przewinęło się u szczytu zdalnej sesji.
mARK

2
Próbowałem tego, ale nie pozwala na przewijanie w sesji mosh
magodiez
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.