2 votos

El terminal se cierra a 80 caracteres aunque la ventana sea más ancha

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 el less 458 instalaciones de MacPorts. Incluso es lo mismo si less es invocado remotamente en algún otro host desde una sesión ssh interactiva.
  • resize imprime el tamaño correcto, y eval `resize` no ayuda. Lo cual no es sorprendente, ya que less 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

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.

1voto

Yasmine Mustafa Puntos 21

xterm-color representa una rama más antigua de Xterm que no refleja con precisión una serie de características importantes soportadas por Terminal (y Xterm).

En versiones anteriores de Terminal, el valor por defecto de la opción TERM la variable de entorno era xterm-color porque era más compatible con Terminal, pero ese no ha sido el caso en varias versiones de OS X. El valor por defecto actual es xterm-256color .

Si se conecta a un host remoto que no incluye xterm-256color , primer intento xterm-16color y luego xterm y ver si están disponibles. Son esencialmente lo mismo, excepto que declaran diferentes números de colores soportados. Representan el Xterm actual, y son mucho más compatibles con Terminal que xterm-color .

Ver mi respuesta https://apple.stackexchange.com/a/79016/6883 para más detalles.

0 votos

Si la respuesta es la misma que otra pregunta, entonces la pregunta es un duplicado y debe cerrarse como tal

2 votos

La pregunta es diferente, y las respuestas sólo coinciden parcialmente. Por eso me he limitado a remitir a ella en lugar de marcarla como duplicada.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X