Descripción del problema
Si aumento el ancho de una ventana Terminal versión 2.3 (309), y luego uso less
(o algún comando que invoca less
, como man
) en esa ventana, a menudo obtengo resultados confusos, ya que las líneas se ajustan a 80 caracteres a pesar de que la ventana es más ancha 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 las instalaciones deless
458 MacPorts. Incluso es lo mismo siless
se invoca de forma remota 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, yaless
que parece tener la idea correcta de cuán ancha es la ventana, solo está confundido por el hecho de que las líneas se rompen demasiado temprano.- La salida normal de la línea de comando (fuera
less
) abarcará toda la ventana.
Análisis
Esto parece ser un error en la forma en que la aplicación maneja cup (modo de posicionamiento del cursor). El siguiente código se puede usar 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
la variable de entorno en xterm-color
lugar de la predeterminada xterm-256color
. Lo hice ya que este último no está disponible en varios hosts a los que ssh, lo que hace que las aplicaciones en esos hosts se quejen de la falta de funcionalidad.
Soluciones alternativas
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 de terminal. Pero eso es bastante molesto. Otra solución sería volver a cambiar la emulación de terminal xterm-256color
y copiar los datos de terminfo a los hosts remotos que no admiten ese valor de fábrica. Lo que también puede ser molesto si solo 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
configuración no es compatible como cabría esperar. ¿Es esto un error en Terminal.app, o no entendí algo sobre cómo se supone que funciona todo este desastre?
¿Alguien tiene una solución más adecuada para manejar estas incompatibilidades?
Detalles técnicos
Para obtener más información, aquí está el resultado de infocmp xterm-color xterm-256color
, ligeramente truncado eliminando 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'.