Descripción del problema
Si incremento el ancho de una ventana de Terminal versión 2.3 (309), y luego uso less
(o algún comando que invoque less
, como man
) en esa ventana, a menudo obtengo resultados confusos, ya que las líneas se ajustan a 80 caracteres, aunque 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
less
nativo y las instalaciones MacPortsless
458. 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 que no es sorprendente, ya queless
parece tener la idea correcta de cuán amplia es la ventana, solo se confunde con el hecho de que las líneas se rompen demasiado pronto. - El resultado de la línea de comando normal (fuera de
less
) abarcará toda la ventana.
Análisis
Esto parece ser un error en la forma en que la aplicación maneja la taza (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 configurar el modo de emulación y la variable de entorno TERM
en xterm-color
en lugar del xterm-256color
predeterminado. Lo hice porque este último no está disponible en varios hosts a los que ssh, lo que hace que las aplicaciones de esos hosts se quejen de la funcionalidad que falta.
Soluciones provisionales
Una forma de evitar este problema parece ser ejecutando 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 alternativa sería cambiar la emulación de terminal de nuevo a xterm-256color
y copiar los datos de terminfo a los hosts remotos que no admiten ese valor de forma inmediata. Lo que también puede ser molesto, si solo quieres echar un vistazo rápido a algún host remoto.
Pregunta básica
En general, me parece que la emulación de la configuración xterm-color
no es compatible como se podría esperar. ¿Se trata de un error en Terminal.app o acaso no entendí bien cómo funciona todo este lío?
¿Alguien tiene una solución más adecuada sobre cómo manejar estas incompatibilidades?
Detalles técnicos
Para más información, aquí está la salida de infocmp xterm-color xterm-256color
, ligeramente truncada 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'.