El terminal se ajusta a 80 caracteres incluso si la ventana es más ancha

2

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 MacPorts less 458. Incluso es lo mismo si less se invoca de forma remota en algún otro host desde una sesión ssh interactiva.
  • resize imprime el tamaño correcto, y eval 'resize' no ayuda. Lo que no es sorprendente, ya que less 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'.
    
pregunta MvG 12.02.2014 - 16:23

1 respuesta

1

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

En versiones anteriores de Terminal, el valor predeterminado de la variable de entorno TERM 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 predeterminado actual es xterm-256color .

Si se está conectando a un host remoto que no incluye xterm-256color , primero intente xterm-16color y luego xterm y vea si están disponibles. Son esencialmente los mismos, excepto que declaran diferentes números de colores compatibles. Representan el Xterm actual y son mucho más compatibles con Terminal que con xterm-color .

Consulte mi respuesta enlace para obtener más detalles.

    
respondido por el Chris Page 06.12.2015 - 11:59

Lea otras preguntas en las etiquetas