Utiliser Mosh sans renoncer à l'historique de défilement local?

64

Y a-t-il un moyen d'utiliser moshsans abandonner le défilement local?

Dans certaines circonstances, l’itinérance IP est utile et nécessaire, mais l’émulation de terminal supplémentaire et la prédiction de clé ne semblent se débarrasser que des lignes de tampon de défilement local et de l’historique des sessions.

cnst
la source

Réponses:

44

Filippo Valsorda propose une solution pour OS X intégrant iTerm 2, tmux et mosh .

Sa solution utilise une seule fenêtre / onglet pour se connecter à un shell distant. Le shell survit aux déconnexions (par exemple, échec de connexion, modifications IP, redémarrage de l'ordinateur portable) et prend en charge le défilement avec un pavé tactile, un copier-coller et des couleurs.

Les mises en garde impliquent que vous deviez créer mosh à partir des sources, que le défilement soit moins fluide que le processus natif et que le cliquer-glisser soit relayé; vous devez donc maintenir Option pour le sélectionner.

  • iTerm

    Dans les paramètres du profil du terminal, activez la création de rapports de souris xterm et définissez le type de terminal de rapport sur xterm-256color .

  • tmux

    Placez ~/.tmux.confsur le serveur à ce qui suit. Avec ces paramètres, si vous essayez de joindre et qu'il n'y a pas de sessions, une nouvelle session est créée. Les paramètres permettent également les interactions avec la souris (et donc le défilement du pavé tactile).

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

    Remarque: sur les tmux plus récents (> 2,1), comme indiqué par tmux -V, les différentes options de la souris (volet de redimensionnement de la souris, mode souris, etc.) ont été réécrites en une seule option mouse. Vous devez donc modifier la deuxième ligne. ci-dessus à la set-window-option -gsouris à laon place.

    Ce défilement de souris fonctionnera également lorsque vous êtes en mode de défilement clavier (par exemple Ctrl, bpuis [), décrit dans l'article Comment faire défiler dans tmux .

  • mosh

    La version stable de mosh est ancienne et ne prend pas en charge les rapports de souris (et le défilement du pavé tactile). Pour installer la dernière version, procédez comme suit:

    OS X (votre client)

    brew install --HEAD mobile-shell
    

    Linux / UNIX (le serveur)

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

Maintenant, pour vous connecter, tapez simplement ce qui suit:

mosh HOST -- tmux a
rbrewer
la source
5
Il est considéré comme une bonne forme de coller en ligne les informations importantes contenues dans le lien.
HalosGhost
2
bien que cette réponse ait été refusée pour des raisons techniques, il s'agit probablement du meilleur moyen (uniquement?) d'obtenir un défilement correct sur le client local à l'aide de mosh.
jayhendren
@ Jayhendren: ou vous pouvez simplement utiliser Eternal Terminal .
Dan Dascalescu le
Pas besoin d'être condescendant. Mon commentaire date de 2014. La première version de Eternal Terminal date de 2017.
jayhendren le
2019 et la solution fonctionne toujours
utilisateur913
15

L'émulation terminale est profondément ancrée dans la conception de mosh , alors non. Mosh fonctionne en faisant en sorte que le client et le serveur conservent chacun leur idée locale de ce à quoi l'écran "ressemble" actuellement, ce qui nécessite que le serveur émule le terminal. C'est ainsi que le client peut actualiser le contenu de l'écran après une absence ou une perte de données.

Je pense qu'une application avec la fonctionnalité d'itinérance IP de mosh mais sans émulation de terminal finirait par être une application très différente (mais plus simple). Pour une telle application, la perte de données (y compris lorsque le client est hors réseau pendant un certain temps) entraînerait une perte ou une corruption du contenu de l'écran. Ceci est une limitation acceptable si l'utilisateur utilise une application où cela n'a pas beaucoup d'importance (par exemple, un shell) ou une application ayant une fonctionnalité de repeinte (par exemple, en viutilisant Control-L).

Les développeurs de Mosh prévoient toutefois une prise en charge du défilement dans l'application , afin de compenser le fait que votre terminal local ne peut plus le faire. Je suppose que cela devrait cependant fonctionner un peu comme screenle tampon de défilement arrière: contrôlé par les frappes de clavier, et non par la barre de défilement et la souris.

Celada
la source
4

Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) est une alternative à Mosh qui prend en charge le défilement natif tout en autorisant l'itinérance IP. ET ne fait pas la prédiction de frappe. Cela peut donc ne pas convenir si vous avez une connexion à latence élevée (si vous utilisez un drone ou un téléphone portable), mais personnellement, ET fait tout ce que je veux et prend en charge le défilement.

DigitalGhost
la source
c'était génial
Soorena
ET est incroyable et nécessite beaucoup plus de plaidoyer .
Dan Dascalescu
1

Décocher "Faire défiler les autres écrans" dans Terminal-> Préférences-> Profils-> Clavier, corrigé pour moi.

Pikachu
la source
1
cette réponse n'a aucun sens, où obtenez-vous même un tel menu?
cnst
3
Ce paramètre prefs existe, mais le fait de décocher le défilement ne faisait fonctionner le défilement que dans ma fenêtre locale, c’est-à-dire que le défilement faisait apparaître les lignes qui existaient avant l’utilisation de la commande mosh. il ne m'a rien montré qui avait défilé du haut de la session à distance.
MARK
2
J'ai essayé, mais cela ne vous permet pas de faire défiler la session mosh
magodiez