Descripción del problema
Si aumento el ancho de una ventana de la versión 2.3 (309) de Terminal, y luego uso less
(o algún comando que invoque less
como man
) en esa ventana, a menudo obtengo una salida confusa, ya que las líneas se envuelven en 80 caracteres a pesar de que la ventana es más amplia y less
intenta formatear el texto para esa ventana más amplia.
- Esto es lo mismo para OS X 10.8.5 nativo
less
y elless
458 instalaciones de MacPorts. Incluso es lo mismo siless
es invocado remotamente en algún otro host desde una sesión ssh interactiva. resize
imprime el tamaño correcto, yeval `resize`
no ayuda. Lo cual no es sorprendente, ya queless
parece tener la idea correcta en cuanto a la amplitud de la ventana, sólo se confunde por el hecho de que las líneas se rompen demasiado pronto.- Salida normal de la línea de comandos (fuera de
less
) abarcará toda la ventana.
Análisis
Esto parece ser un error en la forma en que la taza (modo de posicionamiento del cursor) es manejada por la aplicación. El siguiente código se puede utilizar para reproducir el problema:
tput smcup; echo {0..200}; sleep 2; tput rmcup
Todo el problema parece estar relacionado con el hecho de que he configurado Terminal para establecer el modo de emulación y TERM
a la variable de entorno xterm-color
en lugar de la opción por defecto xterm-256color
. Lo hice porque este último no está disponible en varios hosts a los que hago ssh, lo que hace que las aplicaciones de esos hosts se quejen de la falta de funcionalidad.
Soluciones al problema
Una forma de evitar este problema parece ser ejecutar el comando
tput -T xterm-256color smcup; tput -T xterm-256color rmcup
después de cada cambio de tamaño del terminal. Pero eso es bastante molesto. Otra solución sería cambiar la emulación de la terminal a xterm-256color
y copiando los datos de terminfo a aquellos hosts remotos que no soportan ese valor fuera de la caja. Lo cual puede ser molesto, también, si sólo quieres echar un vistazo rápido a algún host remoto.
Pregunta central
En general, me parece que la emulación de la xterm-color
La configuración no se apoya tan bien como uno esperaría. ¿Se trata de un error en Terminal.app, o he entendido mal algo sobre cómo se supone que funciona todo este lío?
¿Alguien tiene una solución más apropiada para manejar estas incompatibilidades?
Detalles técnicos
Para más información, aquí está la salida de infocmp xterm-color xterm-256color
, ligeramente truncado al eliminar algunas definiciones clave:
comparing xterm-color to xterm-256color.
comparing booleans.
bce: F:T.
ccc: F:T.
mc5i: F:T.
npc: F:T.
comparing numbers.
colors: 8, 256.
ncv: NULL, NULL.
pairs: 64, 32767.
comparing strings.
blink: NULL, '\E[5m'.
cbt: NULL, '\E[Z'.
civis: NULL, '\E[?25l'.
cnorm: NULL, '\E[?12l\E[?25h'.
cvvis: NULL, '\E[?12;25h'.
ech: NULL, '\E[%p1%dX'.
el1: NULL, '\E[1K'.
enacs: '\E)0', NULL.
flash: NULL, '\E[?5h$<100/>\E[?5l'.
hpa: NULL, '\E[%i%p1%dG'.
ich: NULL, '\E[%p1%d@'.
indn: NULL, '\E[%p1%dS'.
initc: NULL, '\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\'.
invis: NULL, '\E[8m'.
is2: '\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8', '\E[!p\E[?3;4l\E[4l\E>'.
kDC: NULL, '\E[3;2~'.
kEND: NULL, '\E[1;2F'.
kHOM: NULL, '\E[1;2H'.
[ ]
kri: NULL, '\E[1;2A'.
kslt: '\E[4~', NULL.
mc0: NULL, '\E[i'.
mc4: NULL, '\E[4i'.
mc5: NULL, '\E[5i'.
op: '\E[m', '\E[39;49m'.
rin: NULL, '\E[%p1%dT'.
rmacs: '^O', '\E(B'.
rmam: NULL, '\E[?7l'.
rmcup: '\E[2J\E[?47l\E8', '\E[?1049l'.
rmm: NULL, '\E[?1034l'.
rmso: '\E[m', '\E[27m'.
rmul: '\E[m', '\E[24m'.
rs1: NULL, '\Ec'.
rs2: '\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8', '\E[!p\E[?3;4l\E[4l\E>'.
setab: '\E[4%p1%dm', '\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m'.
setaf: '\E[3%p1%dm', '\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m'.
sgr: NULL, '%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m'.
sgr0: '\E[m', '\E(B\E[m'.
smacs: '^N', '\E(0'.
smam: NULL, '\E[?7h'.
smcup: '\E7\E[?47h', '\E[?1049h'.
smm: NULL, '\E[?1034h'.
vpa: NULL, '\E[%i%p1%dd'.
0 votos
Posible duplicado de ¿Qué terminal emula la aplicación Terminal de Mountain Lion?
0 votos
@marca: Hay muchas similitudes, pero son preguntas diferentes. Esta pregunta es "¿cómo puedo arreglar el problema de las 80 columnas?", mientras que "¿qué terminal emula la aplicación Terminal de Mountain Lion?" pregunta sobre terminfo y la emulación de terminales en general, y sólo menciona incidentalmente el problema de las 80 columnas como motivación para hacer la pregunta.