Utilisation de jeux de couleurs avec vim et putty


15

J'essaie d'utiliser le jeu de couleurs désert avec VIM 7.0 sur CentOS 5.6 x64 situé ici:

http://hans.fugal.net/vim/colors/desert.vim

J'ai téléchargé le fichier et l'ai enregistré dans mon ~/.vim/colorsrépertoire. Je dis ensuite à VIM d'utiliser le jeu de couleurs en émettant:

:colors desert

Il est censé ressembler à ceci:

entrez la description de l'image ici

Cependant, je reçois ceci:

entrez la description de l'image ici

Je me connecte à ce serveur en tant qu'utilisateur normal (pas rootou sudo) en utilisant PuTTY 0.60 et j'ai défini les options suivantes sous Window -> Colours:

Autoriser le terminal à spécifier les couleurs ANSI - coché
Autoriser le terminal à utiliser le mode 256 couleurs - coché
Le test en gras est d'une couleur différente - vérifié
Tentative d'utilisation des palettes logiques - non cochée
Utiliser les couleurs du système - non coché

Si je me sudoconnecte ou rootessaie de la même façon, je n'obtiens aucune couleur autre que du texte blanc sur fond noir.

Ces schémas sont-ils principalement destinés à gVIM et PuTTY n'est-il simplement pas en mesure d'afficher ces couleurs?

J'ai parcouru un peu Google et je suis tombé sur des articles tels que celui-ci, mais ils ne semblent pas fonctionner.

Réponses:


22

Par défaut, PuTTY se présente comme xterm. La base de données terminfo , utilisée par divers programmes pour déterminer les capacités du terminal, ne xtermprend en charge que huit couleurs:

$ infocmp -1L xterm | grep max_colors

Cela signifie que même si votre version de Xterm prend en charge le mode 256 couleurs, les programmes ne le sauront pas.

  • La solution la plus simple consiste à définir votre variable d'environnement $ TERM sur xterm-256color.

    (Dans votre ~ / .profile, vous pouvez utiliser:
    if [ "$TERM" = xterm ]; then TERM=xterm-256color; fi)

  • Vous pouvez dire à PuTTY de toujours s'identifier comme xterm-256color, via Configuration → Connexion → Données → Chaîne de type terminal .

    Remarque: Si vous utilisez # 1 ou # 2, et vous vous connectez à un serveur qui ne possède la apropriate terminfo entrée, tous les programmes de TUI briseront.

  • Vous pouvez également définir l' 't_Co'option dans vim 256pour remplacer la valeur terminfo.

    if &term == "xterm"
        set t_Co=256
    endif
    
  • Ou vous pouvez modifier la base de données terminfo .

    $ infocmp -L -1 xterm | sed -r 's/(max_colors)#[0-9]+/\1#256/' > /tmp/xterm
    $ tic /tmp/xterm
    

    L'entrée mise à jour sera conservée ~/.terminfo.


Excellente réponse. C'est mieux, mais j'ai l'impression que 256 couleurs ne suffisent pas pour rendre ces tons pastel. Une idée pourquoi je n'obtiens aucune couleur lorsque je suis connecté en tant que root?
Kev

1
@Kev: 1) Le mode 256 couleurs est le meilleur que vous puissiez obtenir sur un émulateur de terminal compatible VT100. (J'ai entendu dire que KDE Konsole prend en charge les vraies couleurs, mais ce n'est pas du tout standard.) 2) Lorsque vous vous connectez en tant que root, vous obtenez un répertoire personnel séparé, ainsi qu'un répertoire séparé ~/.vim/colors.
user1686

1
@Kev: Parce qu'il vi n'a pas de schémas de couleurs ou de coloration syntaxique - ou quoi que ce soit, sauf les fonctionnalités de base d'origine. (Vim est "Vi amélioré" après tout.)
user1686

1
vi --versiondit que c'est vim, est-ce donc un vim réduit pour le faire ressembler à vi? Désolé si c'est une question idiote, cela fait des années que je travaille avec Unix en colère (boîtes SCO Unix avec ports série) et il n'y avait que vi (vrai vi).
Kev

1
Sorte de. Lorsque vous exécutez vim en tant que " vi", il démarre en mode "compatibilité", se comportant autant que possible comme vi. Je ne connais pas CentOS, donc je ne sais pas si c'est juste un mode, ou une construction entièrement séparée. (Ma distribution contient le vrai vi à la place ...)
user1686
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.