Existe-t-il un moyen d'utiliser mosh
sans renoncer au défilement local?
Fondamentalement, dans certaines circonstances, l'itinérance IP est en effet utile et nécessaire, mais l'émulation de terminal supplémentaire et la prédiction de clé semblent se débarrasser uniquement des lignes de tampon de défilement local et de l'historique de session.
Filippo Valsorda a une solution pour OS X qui intègre 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, une défaillance de connexion, des changements d'IP, des redémarrages d'ordinateur portable) et prend en charge le défilement arrière avec un pavé tactile, un copier-coller et des couleurs.
Les mises en garde sont que vous devez créer mosh à partir de la source, le défilement est moins fluide que natif et le clic-glisser est relayé, vous devez donc maintenir Option pour sélectionner.
Dans les paramètres du profil du terminal, Activer les rapports de la souris xterm et définissez le type de terminal de rapport sur xterm-256color.
Ensemble ~/.tmux.conf
sur le serveur aux éléments suivants. Avec ces paramètres, si vous essayez de vous attacher et qu'il n'y a aucune session, une nouvelle est créée. Les paramètres permettent également des 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 (c'est-à-dire> 2.1), comme indiqué par tmux -V
, les différentes options de souris (volet de redimensionnement de la souris, mode souris, etc.) ont été réécrites en une seule option mouse
, vous devez donc changer la deuxième ligne ci-dessus enset-window-option -g
souris on
à la place.
Ce défilement de la souris fonctionne également lorsque vous êtes en mode de défilement du clavier (par ex. Ctrl-b puis [), décrit dans l'article Comment faire défiler dans tmux .
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
L'émulation de terminal est intégrée assez profondément dans la conception de mosh , donc, non. Mosh fonctionne en faisant en sorte que le client et le serveur conservent chacun leur idée locale de ce à quoi "ressemble" actuellement l'écran, et cela nécessite que le serveur effectue une émulation de terminal. C'est ainsi que le client est en mesure de rafraîchir le contenu de l'écran après un certain temps d'absence et de perte de données.
Je pense qu'une application avec la fonction d'itinérance IP de mosh mais sans émulation de terminal finirait par être une application assez 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 la perte ou la corruption du contenu de l'écran. C'est une limitation acceptable si l'utilisateur utilise une application où cela n'a pas beaucoup d'importance (par exemple Shell) ou une application qui a une fonction de repeindre (par exemple vi
en utilisant Control-L).
Les implémenteurs de Mosh prévoient la prise en charge du défilement arrière dans l'application cependant, pour compenser le fait que votre terminal local ne peut plus le faire. Je suppose que cela devrait fonctionner un peu comme le tampon de défilement de screen
: contrôlé par les touches, pas la barre de défilement et la souris.
Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) est une alternative à Mosh qui prend en charge le défilement natif et permet toujours l'itinérance IP. ET ne fait pas la prédiction de frappe, donc cela peut 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 arrière.
En décochant "Faire défiler l'écran alternatif" dans Terminal-> Préférences-> Profils-> Clavier, je l'ai corrigé.