Question

vim semble envoyer plusieurs étranges (c.-à-d.non documenté) des séquences d'échappement vers le terminal sous-jacent lors de l'utilisation du schéma inkpot.Je n'ai pas pu les faire correspondre à des codes d'échappement VT-100 ou ANSI ;est-ce que quelqu'un sait quelles sont ces séquences ?

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

Ces séquences apparaissent comme des jetons invalides dans un émulateur de terminal dont je suis responsable, et j'aimerais ajouter la prise en charge de ces séquences si je peux trouver la documentation appropriée pour elles.

Les variables d'environnement suivantes liées au terminal sont définies sur les systèmes concernés :

TERM=xterm
COLORTERM=

Je n'ai essayé aucun autre paramètre pour ces deux variables.

vim est la version 7.2, mais j'ai essayé des versions plus récentes avec le même effet.

Merci!

Était-ce utile?

La solution

Votre terminal prend-il en charge le mode 88 ou 256 couleurs ?Si tel est le cas, vous devriez probablement utiliser une valeur TERM telle que xterm-88color ou xterm-256color au lieu de simple xterm.

encrier décline spécifiquement la prise en charge des terminaux qui ne prennent en charge que 8/16 couleurs.Du haut du encrier source:

" 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.

Le code qui configure la coloration syntaxique suppose que si le terminal ne prend pas en charge 88 couleurs, alors il doit prendre en charge 256 couleurs.Il n'essaie pas de fournir des valeurs de repli pour le cas de 8 couleurs (par ex.quand TERM=xterm).Ce serait peut-être bien si encrier a émis un message d'erreur (et n'a pas modifié les paramètres de couleur) si le terminal ne semblait pas disposer d'un support de couleur approprié.


Les séquences de contrôle que vous voyez résultent de la tentative de génération d'une séquence de contrôle de couleur de terminal à 8 couleurs pour un numéro de couleur situé en dehors de la plage 0 à 7 d'entrées acceptables pour ce type de terminal.Ainsi, ces séquences ne sont probablement pas valides, mais elles ne sont pas non plus entièrement intentionnelles (dues au fait que encrier suppose un support de 256 couleurs, mais le xterm terminfo ne sait gérer que la prise en charge de base de 8 couleurs).

Par exemple, encrier définit le Normal syntaxe couleur de premier plan à 79 sur les terminaux 88 couleurs ;cela se traduit par 231 pour les terminaux non-88 couleurs (c'est-à-direpour les terminaux 256 couleurs, mais aussi pour vos 8 couleurs xterm).

Lorsque vous essayez de formater ce numéro de couleur hors plage avec TERM=xterm, vous obtenez le résultat ^[[3231m que tu as trouvé :

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

(c'est à dire.insertion 231 entre ^[[3 et m)

Si tu utilises xterm-256color, vous obtenez un résultat plus normal :

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

(c'est à dire.insertion 231 entre ^[[38;5; et m)

De même, le Normal syntaxe La couleur d'arrière-plan de 88 couleurs de 80 est traduite en une valeur de 256 couleurs de 232 et produit l'erreur ^[[4232m séquence pour xterm (mais cela produirait le plus raisonnable ^[[48;5;232m sous xterm-256color).

Autres conseils

^[[3231m

ressemble beaucoup à une définition de couleur faite/mal passée :

^[[32;31m

ce qui n'aurait pas beaucoup de sens de toute façon.

Est-ce que cela se produit avec une valeur spécifique pour $TERM ou pour n'importe quelle valeur ?Quelle version de Vim ?De quel émulateur de terminal parlons-nous ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top