Caracteres ilegibles de SSH en vim / nano en el servidor remoto

18

... y me está volviendo loco.

Básicamente (esto ha estado sucediendo en los últimos meses), inicio sesión en algunos servidores CentOS diferentes (un Linode, otro VPS y un host compartido al que tengo acceso de shell), ejecutando 5.5, 5.7 y 6, desde mi Mac con OS X Lion, utilizando Terminal.

Básicamente:

$ ssh [email protected]

[remote-host] $ nano somefile.txt

Una vez que empiezo a editar el archivo, si utilizo las teclas de flecha para moverme alrededor del cursor, o empiezo a borrar, luego, al escribir nuevamente, el cursor salta un poco, y si guardo el archivo y lo vuelvo a abrir, es obvio que el cursor estaba , de hecho, saltando por todo el lugar en una línea sin razón aparente.

Termino obteniendo cosas como "Este es un texto nuevo". Cuando escribí (en el editor loco por el cursor) "Esta es una línea de texto".

Es un gran problema cuando se trata de editar archivos de configuración, porque a menudo tengo que editar una línea, guardar y cerrar, luego volver a abrir solo para asegurarme de que la línea sea correcta ... luego editar otra línea ... y se está volviendo bastante molesto .

Encontré problemas de renderizado de Linode Lish Shell Vim y Nano: las líneas no aparecen / las posiciones del cursor son incorrectas , pero no sé si eso se relaciona mucho, ya que se refiere específicamente a lish.

geerlingguy
fuente
1
Hola @geerlingguy, publiqué una respuesta a esta pregunta hace años cuando tu nombre no significaba nada para mí, pero ahora uso tu trabajo regularmente. ¡Gracias por todas sus contribuciones ansibles!
dbenton el
1
@dbenton - Te ayudo, tú me ayudas, somos una comunidad feliz :)
geerlingguy

Respuestas:

14

[ Actualización: a partir de Mac OS X Mountain Lion 10.8, Terminal admite la secuencia de escape Backtab, eliminando este problema.]

La versión (s) de nano en esos servidores a veces envía una secuencia Backtab (ESC [Z) al mover el cursor hacia la izquierda por un carácter, pero Terminal no admite esta secuencia, por lo que nano cree que el cursor se ha movido cuando no ty su idea sobre la posición actual del cursor no está sincronizada con el terminal.

Por razones que no puedo entender, nano envía una pestaña posterior cuando se mueve hacia la izquierda y el cursor es un carácter a la derecha de una tabulación. Del mismo modo, IIRC, envía una Tabulación (Control-I) cuando se mueve hacia la derecha y el cursor está un carácter a la izquierda de una tabulación. No sé por qué hace esto alrededor de tabulaciones en lugar de moverse siempre hacia la izquierda / derecha usando las mismas secuencias de caracteres. La versión de nano incluida con Mac OS X Lion 10.7 no hace esto.

Nano solo hace esto cuando el terminfo dice que la cbtcapacidad es compatible. El término predeterminado para Terminal es xterm-256color, que declara esta capacidad y la asigna a la secuencia Backtab. Una solución alternativa es establecer la TERMvariable de entorno en algo que no declare esta capacidad. Puede hacer esto en la máquina local antes de invocar ssho en el archivo de inicio de shell en el host remoto. Configurarlo funcionará xterm-coloren un apuro, aunque no se recomienda, ya que deshabilita otros comportamientos importantes (por ejemplo, 256 colores, BCE, preservación alternativa del contenido de la pantalla). (Un enfoque más pesado es personalizar su xterm-256color(o xterm) archivo terminfo en el host remoto para eliminarlo cbt).

Se recomienda personalizar el host remoto (de una forma u otra), de modo que las personalizaciones no se apliquen localmente ni a otros hosts remotos, pero la solución más simple es cambiar una configuración de preferencia de Terminal para usar en xterm-colorlugar de xterm-256color:

Terminal> Preferencias> Configuración> [perfil]> Avanzado> Declarar terminal como:

Recomiendo duplicar un perfil de configuración existente, personalizarlo y solo usarlo cuando se conecte a esos hosts remotos.

Chris Page
fuente
Definir xterm-color definitivamente funciona: ¿podría explicar cómo personalizar mi archivo terminfo en el host remoto? Un enlace haría, pero probablemente será volver a este mensaje de vez en cuando para recordar este consejo :)
geerlingguy
1
@geerlingguy Modificando una definición de terminfo existente . Elimine la cbt=\E[Zentrada en el .tiarchivo fuente.
TachyonVortex
Esto me ayudó, configuré la opción de xterm-256color a xterm y ahora puedo seleccionar, copiar, etc. como solía hacer antes. (No sé cómo o quién cambió esta opción). ¡Gracias!
Spacebiker
8

Estaba teniendo este mismo problema. Encontré este hilo que recomendaba, entre otras soluciones, una variable de entorno en el servidor remoto:

export TERM=xterm-color

Agregar esto a ~ / .bash_profile resolvió el problema por mí. Esta solución es simple y tiene la ventaja de afectar solo a un usuario específico en un host específico.

dbenton
fuente
2

Tuve el mismo problema en el programa MobaXTerm. La causa del problema fue la tecla -K que usé para habilitar el teclado numérico en Nano al usar PuTTY. Como descubrí en MobaXTerm -K no es necesario (el teclado numérico funciona de manera predeterminada) y sin él las teclas de flecha funcionan correctamente y no insertan basura al azar.

Tooluka
fuente
1

OSX 10.7.4 con Centos ejecutándose como SO invitado

Dentro de las preferencias del terminal OSX, configuración, avanzado

Declare terminal as:xterm-color
Strict VT-100 keypad behaviour - TICKED!

No más problemas :)

Jarrod
fuente
Tenga en cuenta que la preferencia de "comportamiento del teclado VT-100" no tiene ninguna relación con este Q&A y no tiene ningún efecto en el resultado.
Chris Page
1

Para usuarios de MobaXterm. Si no está utilizando -K y aún experimenta el problema. Asegúrese de que las siguientes líneas estén comentadas en su archivo / etc / nanorc.

# set rebinddelete

# set rebindkeypad

Borrar texto
fuente
0

El problema probable es que sí, tanto su máquina local como su servidor ESTÁN en sistemas unix que tienen nano, pero esas versiones nano pueden ser diferentes.

export TERM=xterm-color
boulder_ruby
fuente
-1

Si lo que obtienes es "Este es un texto sin formato" y lo que escribiste es "Esta es una línea de texto" (debo suponer que tu informe es correcto), entonces tienes una tecla de "control" escasa, sea lo que sea en Mac (comando ? ¿manzana?). Debido a que nano está usando las teclas control + para "saltar" y usted tiene menos caracteres que los escritos, por lo que tenemos a) caracteres que desaparecen b) las secuencias de control que aparecen de la nada deduciendo que a) se convierte en b) es lógico.

También puede tener algún programa desagradable de teclas de acceso rápido / macro / whatnot. Sospecho que esto pertenece al superusuario y no al servidor predeterminado, pero mantendré marcado tal vez alguien tenga una respuesta realista, vinculada a SSH.

chx
fuente
Ocurre cuando uso las teclas de flecha para moverme hacia adelante y hacia atrás en una línea, más a menudo que cuando simplemente estoy escribiendo. Pero parece bastante al azar. Voy a probar la sugerencia de Chris rápidamente para ver si funciona, ¡pero gracias por responder!
geerlingguy