Il terminale esegue il wrapping a 80 caratteri anche se la finestra è più ampia

2

Descrizione del problema

Se aumento la larghezza di una finestra di Terminal versione 2.3 (309), e poi utilizzo less (o qualche comando che richiama less , come man ) in quella finestra, ottengo spesso un output confuso, poiché le linee si avvolgono a 80 caratteri anche se la finestra è più larga e less tenta di formattare il testo per quella finestra più ampia.

  • È lo stesso per OS X 10.8.5% nativo OS X e less 458 installazioni MacPorts. È anche lo stesso se less viene richiamato in remoto su un altro host da una sessione ssh interattiva.
  • less stampa la dimensione corretta e resize non aiuta. Il che non è sorprendente, dal momento che eval 'resize' sembra avere la giusta idea di quanto sia ampia la finestra, è solo confuso dal fatto che le linee si rompono troppo presto.
  • L'output della riga di comando normale (al di fuori di less ) coprirà l'intera finestra.

Analisi

Questo sembra essere un bug nel modo in cui tazza (modalità di posizionamento del cursore) viene gestita dall'applicazione. Il seguente codice può essere utilizzato per riprodurre il problema:

tput smcup; echo {0..200}; sleep 2; tput rmcup

L'intero problema sembra essere correlato al fatto che ho configurato Terminal per impostare la modalità di emulazione e la variabile di ambiente less su TERM invece del xterm-color predefinito. L'ho fatto in quanto quest'ultimo non è disponibile su diversi host a cui ho eseguito l'accesso, causando lamentele per le applicazioni su tali host.

Soluzioni alternative

Un modo per evitare questo problema sembra essere l'esecuzione del comando

tput -T xterm-256color smcup; tput -T xterm-256color rmcup

dopo ogni modifica delle dimensioni del terminale. Ma è abbastanza fastidioso. Un'altra soluzione alternativa consisterebbe nel cambiare l'emulazione del terminale su xterm-256color e copiare i dati terminfo in quegli host remoti che non supportano tale valore fuori dalla scatola. Anche questo può essere fastidioso, se vuoi solo dare un'occhiata veloce ad un host remoto.

Domanda principale

Nel complesso mi sembra come se l'emulazione dell'impostazione xterm-256color non fosse supportata così come si spererebbe. Si tratta di un bug in Terminal.app o ho frainteso qualcosa su come dovrebbe funzionare tutto questo casino?

Qualcuno ha una soluzione più appropriata su come gestire queste incompatibilità?

Dettagli tecnici

Per ulteriori informazioni, ecco l'output di xterm-color , leggermente troncato rimuovendo alcune definizioni chiave:

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'.
    
posta MvG 12.02.2014 - 16:23
fonte

1 risposta

1

xterm-color rappresenta un ramo più vecchio di Xterm che non riflette in modo accurato un numero di funzioni importanti supportate da Terminal (e Xterm).

Nelle versioni precedenti di Terminal, il valore predefinito della variabile di ambiente TERM era xterm-color perché era più compatibile con Terminal, ma non è stato il caso per diverse versioni di OS X. L'impostazione predefinita corrente è xterm-256color .

Se ti connetti a un host remoto che non include xterm-256color , prova prima xterm-16color e poi xterm e verifica se sono disponibili. Sono essenzialmente gli stessi tranne che dichiarano numeri diversi di colori supportati. Rappresentano l'attuale Xterm e sono molto più compatibili con Terminal di xterm-color .

Vedi la mia risposta link per ulteriori dettagli.

    
risposta data 06.12.2015 - 11:59
fonte

Leggi altre domande sui tag