¿Cómo puedo obtener 256 colores en la Terminal predeterminada a través de SSH?

5

Muchas preguntas similares, pero parece que no puedo encontrar nada que coincida exactamente.

Estoy usando el terminal predeterminado (en Yosemite) para SSH en una máquina virtual. El terminal de la VM está configurado para usar TERM=xterm-256color correctamente y 256 colores funcionan localmente en la VM con la misma configuración de terminal, pero los colores no superarán la conexión SSH. ¿Alguien tiene alguna idea de lo que se necesita para que Terminal simplemente trate la salida como secuencias de 256 colores normales?

Lo único que quiero aquí es averiguar por qué los códigos de escape de 256 colores se ignoran en Terminal.app cuando se conectan a través de una conexión SSH. Y, por supuesto, para que deje de ignorar las secuencias de escape.

Información posiblemente excesiva:

La VM está ejecutando Windows 7, el shell es bash en cygwin, el servidor ssh es bitvise.

Estoy viendo 3 casos: localmente en el OSH nativo bash en Terminal.app, localmente en el VM bash en MinTTY, y en la VM a través de SSH en Terminal.app.

infocmp xterm-256color produce resultados idénticos en los tres casos, y tput colors informa 256 en todos los casos.

(tput setaf 200 && echo pink) > pink produce resultados idénticos en los tres casos:

$ hexdump -C pink
00000000  1b 5b 33 38 3b 35 3b 32  30 30 6d 70 69 6e 6b 0a  |.[38;5;200mpink.|
00000010

cat pink en Terminal.app (localmente, no con SSHed en ninguna parte) o en MinTTY en la máquina virtual imprime el texto rosado esperado. cat pink en Terminal.app mientras que SSHed a la VM produce texto gris claro predeterminado.

La conexión SSH está configurada con EscapeChar none , por lo que los datos deben venir con una limpieza binaria (cambiar esta configuración no hizo ninguna diferencia).

Las preferencias en Terminal.app están configuradas para reportar como xterm-256color , aunque no creo que eso deba hacer ninguna diferencia.

¿Alguna idea sobre qué es comer la secuencia de escape para fallar? No estoy usando nada que no sea simple o bash para shells, no screen o tmux (a menos que Terminal.app lo use de forma automática / interna).

    
pregunta danwyand 05.11.2014 - 23:42

2 respuestas

2

Bah ... la parte culpable fue el servidor SSH. No sé por qué y no pude encontrar un lugar para deshabilitar el comportamiento (a excepción de ir a la terminal tonta que tenía sus propios problemas), pero el viejo openssh hace el trabajo.

    
respondido por el danwyand 25.11.2014 - 21:24
0

El terminal solo admite de forma predeterminada 16 colores. Recomendaría utilizar un cliente de terminal diferente, como iTerm2 .

Otra forma de usar este programa para hacer que el terminal muestre todos los colores.

  

[En iTerm 2] La forma recomendada es configurar su tipo de terminal en xterm-256color en Preferencias- > Perfiles- > Terminal- > Reportar tipo de terminal. También es posible que debas poner set background = light o set background = dark en tu .vimrc. Kevin Coylar describe otra técnica en esta publicación de blog sobre los Esquemas de color de Pretty Vim en iTerm2.

    
respondido por el Ben Aubin 16.11.2014 - 16:21

Lea otras preguntas en las etiquetas