Domanda

Vim sembra inviare diverse sequenze strane (I.e. Unogumentato) di sfuggire al terminale sottostante quando si utilizza lo schema Inkpot.Non sono stato in grado di abbinarli a tutti i codici VT-100 o ANSI di fuga;Qualcuno sa cosa sono queste sequenze?

^[[3231m
^[[4232m
^[[3130m
.

Queste sequenze si presentano come token non valide in un emulatore terminale sono responsabile per, e vorrei aggiungere supporto per queste sequenze se riesco a trovare una documentazione corretta per loro.

Le seguenti variabili di ambiente relative alla terminale sono impostate sui sistemi interessati:

TERM=xterm
COLORTERM=
.

Non ho provato altre impostazioni per quelle due variabili.

Vim è la versione 7.2, ma ho provato nuove versioni con lo stesso effetto.

Grazie!

È stato utile?

Soluzione

Il terminale supporta la modalità 88 o 256 colori? In tal caso, probabilmente dovresti usare un valore termine come xterm-88color o xterm-256color invece di Wain xterm.

INKPOT Dichiara specificamente il supporto per i terminali che supportano solo 8/16 colori. Dalla cima del inkpot sorgente :

.
" This should work in the GUI, rxvt-unicode (88 colour mode) and xterm (256
" colour mode). It won't work in 8/16 colour terminals.
.

Il codice che imposta la colorazione della sintassi presuppone che se il terminale non supporti 88 colori, quindi deve supportare 256 colori. Non tenta di fornire valori di fallback per il caso di 8 colori (ad esempio quando TERM=xterm). Forse sarebbe bello se inkpot ha rilasciato un messaggio di errore (e non ha modificato le impostazioni del colore) se il terminale non sembrava avere un supporto a colori appropriato.


.

Le sequenze di controllo Si vede risulta dal tentativo di generare una sequenza di controllo del colore del terminale a 8 colori per un numero di colori che è al di fuori della gamma 0-7 di ingressi accettabili per quel tipo di terminale. Quindi, queste sequenze probabilmente non sono valide, ma non sono interamente intenzionali (derivanti perché inkpot presuppone il supporto di 256 colori, ma la voce di terminale xterm so solo come gestire il supporto di base a 8 colori).

Ad esempio, INKPOT Imposta il colore del primo piano della sintassi della sintassi di Normal su 79 sui terminali a 88 colori; Questo è tradotto in 231 per terminali non a 88 colori (cioè per terminali a 256 colori, ma anche per il tuo xterm di 8 colori).

Quando si tenta di formattare questo numero di colori fuori campo con TERM=xterm, ottieni il risultato ^[[3231m che hai trovato:

% tput -T xterm setaf 231 | od -a
0000000  esc   [   3   2   3   1   m
0000007
.

(I.e. Inserimento 231 tra ^[[3 e m)

Se si utilizza xterm-256color, ottieni un risultato più normale:

% tput -T xterm-256color setaf 231 | od -a
0000000  esc   [   3   8   ;   5   ;   2   3   1   m
0000013
.

(I.e. Inserimento 231 tra ^[[38;5; e m)

Allo stesso modo, la sintassi della sintassi di Normal 88-colore colore di 80 è tradotta in un valore di 256 colori di 232 e produce la sequenza errante ^[[4232m per xterm (ma produrrebbe il più ragionevole ^[[48;5;232m in xterm-256color).

Altri suggerimenti

^[[3231m
.

Sembra molto simile a una definizione di colore fatta / andata male:

^[[32;31m
.

che non farebbe molto senso comunque.

Accata con un valore specifico per $TERM o per qualsiasi valore?Quale versione vim?Di quale emulatore terminale stiamo parlando?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top