¿Usar Mosh sin renunciar al desplazamiento / historial local?

64

¿Hay alguna manera de usar moshsin renunciar al desplazamiento local?

Básicamente, en algunas circunstancias, la itinerancia de IP es realmente útil y necesaria, pero la emulación de terminal adicional y la predicción clave parecen estar eliminando las líneas de búfer de desplazamiento local y el historial de la sesión.

cnst
fuente

Respuestas:

44

Filippo Valsorda tiene una solución para OS X que incorpora iTerm 2, tmux y mosh .

Su solución utiliza una sola ventana / pestaña para conectarse a un shell remoto. El shell sobrevive a las desconexiones (p. Ej., Falla de conexión, cambios de IP, reinicio de la computadora portátil) y admite el desplazamiento hacia atrás con un panel táctil, copiar y pegar, y colores.

Las advertencias son que debe construir mosh desde la fuente, el desplazamiento es menos fluido que el nativo y se retransmite el clic y arrastre, por lo que debe mantener presionada la tecla Opción para seleccionar.

  • iTerm

    En la configuración del Perfil de terminal, habilite los informes de mouse xterm y configure el Tipo de terminal de informe en xterm-256color .

  • tmux

    Establezca ~/.tmux.confen el servidor lo siguiente. Con esta configuración, si intenta adjuntar y no hay sesiones, se crea una nueva. La configuración también permite interacciones con el mouse (y, por lo tanto, desplazamiento del panel táctil).

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

    Nota: en tmux más reciente (es decir,> 2.1), según lo informado tmux -V, las diversas opciones del mouse (mouse-resize-pane, mouse-mode, etc.) se han reescrito en una sola opción mouse, por lo que debe cambiar la segunda línea arriba al set-window-option -gmouse en suon lugar.

    Este desplazamiento del mouse también funcionará cuando esté en el modo de desplazamiento del teclado (por ejemplo Ctrl, bluego [), descrito en el artículo Cómo desplazarse en tmux .

  • mosh

    La versión estable de mosh es antigua y no admite informes del mouse (y desplazamiento del panel táctil). Para instalar la última versión, haga lo siguiente:

    OS X (su cliente)

    brew install --HEAD mobile-shell
    

    Linux / UNIX (el servidor)

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

Ahora, para conectarse, simplemente escriba lo siguiente:

mosh HOST -- tmux a
rbrewer
fuente
55
Se considera buena forma de pegar la información importante del enlace en línea.
HalosGhost
2
aunque esta respuesta fue rechazada por razones técnicas, es probablemente la mejor (¿solo?) forma de obtener un desplazamiento decente en el cliente local usando mosh.
jayhendren
@jayhendren: o simplemente puedes usar Eternal Terminal .
Dan Dascalescu
No es necesario ser condescendiente. Mi comentario fue de 2014. El primer lanzamiento de Eternal Terminal fue en 2017.
jayhendren
2019 y la solución aún funciona
user913
15

La emulación de terminal está muy integrada en el diseño de mosh , así que no. Mosh funciona haciendo que tanto el cliente como el servidor mantengan su idea local de cómo se ve actualmente la pantalla, y eso requiere que el servidor emule la terminal. Así es como el cliente puede actualizar el contenido de la pantalla después de que haya estado fuera por un tiempo y haya perdido algunos datos.

Creo que una aplicación con la función de roaming IP de mosh pero sin emulación de terminal terminaría siendo una aplicación bastante diferente (pero más simple). Para una aplicación de este tipo, la pérdida de datos (incluso cuando el cliente está fuera de la red durante algún tiempo) provocaría la pérdida o la corrupción del contenido de la pantalla. Esta es una limitación aceptable si el usuario está usando una aplicación donde esto no importa mucho (por ejemplo, shell) o una aplicación que tiene una función de repintado (por ejemplo, viusando Control-L).

Sin embargo, los implementadores de Mosh están planeando el soporte de desplazamiento hacia atrás en la aplicación , para compensar el hecho de que su terminal local ya no puede hacerlo. Sin embargo, supongo que esto debería funcionar un poco como screenel búfer de desplazamiento hacia atrás: controlado por las pulsaciones de teclas, no por la barra de desplazamiento y el mouse.

Celada
fuente
4

Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) es una alternativa a Mosh que admite el desplazamiento nativo y aún permite el roaming IP. ET no hace la predicción de tipeo, por lo que puede que no sea adecuado si tiene una conexión de alta latencia (si está conectando a un dron o desde un teléfono celular), pero personalmente ET hace todo lo que quiero y admite el desplazamiento hacia atrás.

DigitalGhost
fuente
eso fue increíble
Soorena
ET es increíble y necesita mucha más promoción .
Dan Dascalescu
1

Desmarcar "Desplazar pantalla alternativa" en Terminal-> Preferencias-> Perfiles-> Teclado lo arregló para mí.

Pikachu
fuente
1
esta respuesta no tiene sentido, ¿de dónde sacas ese menú?
Cnst
3
Esa configuración de preferencias existe, pero desmarcarla hizo que el desplazamiento funcionara solo en mi ventana local, es decir, el desplazamiento hacia abajo trajo a la vista las líneas que estaban allí antes de usar el comando mosh. no me mostró nada que se hubiera desplazado desde la parte superior de la sesión remota.
MARCA
2
Intenté esto, pero no te permite desplazarte en la sesión de mosh
magodiez