Usa Mosh senza rinunciare allo scrollback / alla cronologia locali?


64

C'è un modo di usare moshsenza rinunciare allo scrollback locale?

Fondamentalmente, in alcune circostanze, il roaming IP è davvero utile e necessario, ma l'emulazione terminale aggiuntiva e la previsione dei tasti sembrano sbarazzarsi solo delle linee del buffer di scrollback locale e della cronologia delle sessioni.


Risposte:


44

Filippo Valsorda ha una soluzione per OS X che incorpora iTerm 2, tmux e mosh .

La sua soluzione utilizza un'unica finestra / scheda per connettersi a una shell remota. La shell sopravvive alle disconnessioni (ad esempio, interruzione della connessione, modifiche dell'IP, riavvii del laptop) e supporta lo scrollback con touchpad, copia-incolla e colori.

Le avvertenze sono che devi creare mosh dalla fonte, lo scorrimento è meno fluido rispetto a quello nativo e il clic-trascinamento viene inoltrato, quindi devi tenere premuto Opzione per selezionare.

  • iTerm

    Nelle impostazioni del Profilo terminale, abilitare il reporting del mouse xterm e impostare Tipo di terminale report su xterm-256color .

  • tmux

    Impostare ~/.tmux.confsul server come segue. Con queste impostazioni, se si tenta di collegarsi e non ci sono sessioni, ne viene creata una nuova. Le impostazioni consentono anche le interazioni con il mouse (e quindi lo scorrimento del touchpad).

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

    Nota: su tmux più recenti (ovvero> 2.1), come riportato da tmux -V, le varie opzioni del mouse (riquadro del ridimensionamento del mouse, modalità del mouse, ecc.) Sono state riscritte in una singola opzione mouse, quindi è necessario cambiare la seconda riga sopra al set-window-option -gmouseon invece.

    Questo scorrimento del mouse funzionerà anche quando ci si trova nella modalità di scorrimento della tastiera (ad es. Ctrl- ballora [), descritta nell'articolo Come scorrere in tmux .

  • mosh

    La build stabile di mosh è obsoleta e non supporta i report del mouse (e lo scorrimento del touchpad). Per installare la versione più recente, procedi come segue:

    OS X (il tuo client)

    brew install --HEAD mobile-shell
    

    Linux / UNIX (il server)

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

Ora, per connetterti, basta digitare quanto segue:

mosh HOST -- tmux a

5
È considerato una buona forma per incollare le informazioni importanti dal collegamento in linea.
HalosGhost,

2
sebbene questa risposta sia stata sottoposta a downgrade per motivi tecnici, è probabilmente il modo migliore (solo?) per ottenere uno scrollback decente sul client locale usando mosh.
Jayhendren,

@jayhendren: oppure puoi semplicemente usare Eternal Terminal .
Dan Dascalescu,

Non c'è bisogno di essere condiscendenti. Il mio commento è stato del 2014. La prima versione di Eternal Terminal è stata nel 2017.
jayhendren,

2019 e la soluzione funziona ancora
user913

15

L'emulazione terminale è piuttosto approfondita nel design di mosh , quindi no. Mosh funziona facendo in modo che sia il client sia il server mantengano la propria idea locale di ciò che lo schermo attualmente "assomiglia", e ciò richiede che il server esegua l'emulazione terminale. Ecco come il client è in grado di aggiornare i contenuti dello schermo dopo che è stato via per un po 'e ha perso alcuni dati.

Penso che un'applicazione con la funzione di roaming IP di mosh ma senza emulazione terminale finisca per essere un'applicazione piuttosto diversa (ma più semplice). Per tale applicazione, la perdita di dati (anche quando il client è fuori rete per qualche tempo) comporterebbe la perdita o il danneggiamento dei contenuti dello schermo. Questa è una limitazione accettabile se l'utente sta utilizzando un'applicazione in cui ciò non ha molta importanza (ad es. Shell) o un'applicazione che ha una funzione di ridisegno (ad es. viUsando Control-L).

Gli implementatori di Mosh stanno pianificando il supporto dello scrollback nell'applicazione , per compensare il fatto che il terminale locale non può più farlo. Immagino che dovrebbe funzionare un po 'come screenil buffer di scrollback: controllato da sequenze di tasti, non da barra di scorrimento e mouse.


4

Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) è un'alternativa a Mosh che supporta lo scrollback nativo e consente ancora il roaming IP. ET non esegue la previsione di digitazione, quindi potrebbe non essere adatto se si dispone di una connessione ad alta latenza (se si sta eseguendo la scansione di un drone o da un telefono cellulare), ma personalmente ET fa tutto ciò che voglio e supporta lo scrollback.


è stato fantastico
Soorena,

ET è incredibile e ha bisogno di molto più sostegno .
Dan Dascalescu,

1

Deselezionando "Scorri schermata alternativa" in Terminale-> Preferenze-> Profili-> Tastiera riparato per me.


1
questa risposta non ha senso, dove trovi anche un menu del genere?
primo

3
L'impostazione di prefs esiste, ma deselezionandola fa sì che lo scorrimento funzioni solo nella mia finestra locale, ovvero lo scorrimento verso il basso ha messo in evidenza le linee che erano lì prima che usassi il comando mosh. non mi mostrava nulla che fosse scivolato dalla parte superiore della sessione remota.
MARZO

2
Ho provato questo, ma non ti permette di scorrere nella sessione mosh
magodiez
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.