8
votes

Pour réparer la couleur dans Vim ou pour faire le plongeon?

Je suis déçu à cause du comportement Vim sous Ubuntu 13.04 et les problèmes que je possède la reproduction des couleurs.

J'ai des problèmes lors de la définition d'un ColorScheme et j'ai également essayé de résoudre ce problème avec Set T_CO = 256 mais je peux faire n'importe quoi et rien ne change. J'ai également essayé différents émulateurs de terminaux A et différents paramètres, mais vraiment rien ne change.

J'ai essayé Gvim et apparemment, il gère les couleurs correctement nd, j'ai un comportement beaucoup plus cohérent, ma question est que ma question est la suivante: qu'est-ce que je manque lorsque vous utilisez GVIM au lieu de Vim?

Je suis un nouvel utilisateur VIM, donc je ne connais pas le potentiel de ces deux applications.

EDIT: Par exemple, voilà comment on ressemble au thème darkblue sous vim exécuté dans gnome-terminal  Entrez la description de l'image ici


4 commentaires

Je suppose que vous utilisez un ColorScheme qui a été écrit spécifiquement pour GVIM. Pouvez-vous vous en créer un lien?


@RandyMorris Pas même les coloriers groupésCheme travaillent, par exemple darkblue , j'ai également essayé du schéma de VIMCOLORSCHEMETESTEST.GOOGLOGLECODOME_SVN/HTML/INDEX-C.HTML Avec des résultats identiques. Le point est qu'aucun chronique semble fonctionner correctement.


Votre capture d'écran me semble bien amende; La couleur d'arrière-plan dans le terminal est en effet noire, non bleu foncé, et il y a moins de couleurs, car le schéma utilise uniquement la palette 16 couleurs par défaut dans le terminal.


Beaucoup de bonnes réponses! Je teste mes couleurs avec le plugin suivant: github.com/guns/xterm-color-table .vim . Lorsqu'il affiche la table de couleurs complète, vous savez que vous avez toutes les couleurs que vous pouvez.


6 Réponses :


6
votes

Terminal Vim, surtout lorsque vous souhaitez utiliser des couleurs de couleur élevé, est en effet plus de travail à configurer. Cependant, vous trouverez une pléthore d'articles et de conseils sur le Web. Puisque vous n'avez pas dit vos problèmes précis, deux conseils:

  1. Assurez-vous que les couleursCheme prennent en charge des terminaux de haute couleur (certaines sont uniquement GVIM)
  2. Utilisez un émulateur de terminal moderne comme gnome-terminal et définissez correctement le terme la variable (i.e. gnome-256Couleur ); Cela évite de désordre avec : définir t_co , qui est un hack.

    GVIM

    Avantages

    Visuellement, vous obtenez des capacités de surbrillance supplémentaires telles que les sous-moteur pour les erreurs d'orthographe et le spectre de couleurs complète 24 bits RVB.

    Vous avez également plus de clés disponibles pour la mappage (ou au moins au moins, d'autres clés sont simples sur la carte sans avoir à approfondir le code de clé et les problèmes de terminal).

    contre

    Si votre flux de travail VIM interagit fortement avec la coque, c'est-à-dire si vous exécutez beaucoup d'externe :! commande shell ou : faire ou lancez un ou lancez un : coquille à partir de Vim, seul le terminal offre des capacités complètes; GVIM a seulement une émulation de terminal primitive intégrée, de sorte qu'une sortie peut être fausse ou une surbrillance manquante.


    Je fais personnellement la majeure partie de mon édition dans GVIM, mais démarrez parfois Vim dans un terminal (par exemple pour éditer des fichiers de configuration Linux ou via SSH).


3 commentaires

Sur Ubuntu Gnome-Terminal est l'émulateur par défaut et à côté de Set T_CO = 256 Je n'ai pas trouvé autre chose qui pourrait éventuellement influencer le nombre de couleurs reproduites à l'écran. Par exemple, c'est la façon dont le thème de Darkblue ressemble à i42.tinypic.com/7319xy.png


peut-être mentionner le terme variable env-env-env-env-env-e.g. terme = xterm-256Color


J'ajouterais également un autre pro de GVIM est qu'il peut afficher simultanément un mélange de caractères de type romain et italique ; Les italiques sont utilisés par certains fichiers de syntaxe pour certains types de fichiers.



1
votes

GVIM n'est pas beaucoup plus que Vim avec une interface graphique et un meilleur support de couleur: il ne devrait y avoir aucune différence profonde entre la manière dont vous utilisez les deux.

SET T_CO = 256 est pas une solution appropriée à n'importe quel problème de ColorScheme. Si vous voulez des couleurs colorées dans Vim, le seul chose à faire est de configurer votre émulateur de terminal pour vous faire de la publicité «capable d'afficher 256 couleurs». Comment cela dépend de votre émulateur de terminal, mais cela résume généralement la variable d'environnement à terme à xterm-256Color ou une valeur similaire. Vous n'avez pas besoin de faire autre chose.

Il y a des milliers de ColorsColeurs de Vim à choisir, certains sont uniquement des gui-seulement, certains sont des terminaux seulement ... assurez-vous de choisir un choischeme qui convient à votre usage. GUI ColorsCheme peut utiliser des milliers de couleurs, mais CLI ColorsCHEMES est limitée à la palette Xterm 256 couleurs; Cela a tendance à faire des couleurs de l'interface graphique, les compagnies colorantes "plus jolies" mais pas nécessairement plus utile.

S'il n'y a pas d'indice au nom du Colorscheme ou de son README / Description, vous pouvez l'ouvrir et rechercher guibg et ctermbg . Si vous avez ctermbgg (ou ctermfg ...) Le ColorScheme est principalement garanti de fonctionner dans un émulateur de terminal 1006 couleurs capable. Si vous avez guibg Le ColorScheme fonctionnera dans GVIM. Si vous avez les deux, vous pouvez avoir les mêmes couleursCheme pour Vim et Gvim.

Bien sûr, YMMV.

Aussi, voir Cette autre réponse à la mienne à une question similaire .


2 commentaires

la chose xterm-256Couleur ne fonctionne pas non plus non plus, et cette réponse askubuntu.com/questions/67/... C'est ce que je cherchais avant d'utiliser ce" truc ".


Oui, cela fonctionne, sur Ubuntu et sur chaque distribution Linux ainsi que dans tous les émulateurs de terminaux courants. Veuillez mettre à jour votre question avec une description claire de votre problème et de ce que vous avez déjà essayé.



7
votes

En supposant que votre environnement Ubuntu est correctement configuré (et à en juger de la capture d'écran, c'est), vous êtes probablement simplement déçu que la plupart des écoulements de couleurs ne viennent pas avec un support de couleur élevé dans le terminal.

Vous pouvez utiliser plugin CSAPRROX (ou une de ses alternatives ) Pour traduire une interface graphique de guiche à une borne de haute couleur (c.-à-d. 88-256 Color). Cela vous fera une approximation plus étroite.


3 commentaires

La commande tput couleurs montre 256 , comment je peux avoir des millions de couleurs?


Vous ne pouvez pas, 256 est le maximum dans le terminal. Néanmoins, c'est beaucoup mieux et assez proche de Gvim que de 16 couleurs par défaut que la plupart des écoutes de couleurs (comme la référence référencée darkblue ) avec. Essayez!


@ user2384250, vous ne pouvez pas obtenir des millions de couleurs dans un émulateur terminal et dans Vim sans utiliser de konsole et un vim patché. Puisque vous êtes un nouvel utilisateur, je vous conseillerais de pas passer à travers ce trou de lapin et d'être satisfait de ce que vous avez.



1
votes

J'étais un utilisateur VIM et passez à GVIM à cause du même type de problème, à savoir l'incompatibilité de la palette de couleurs.

Au départ, je n'ai pas aimé l'encombrement visuel ajouté par tous les boutons, barre de défilement et menus de la fenêtre GVIM. P>

Heureusement, vous pouvez cacher tout cela et obtenir quelque chose de très proche d'une console VIM en utilisant le code suivant dans votre .vimrc code>: p>

if has("gui_running")
    " GUI is running or is about to start.
    " Maximize gvim window.
    set lines=120 columns=140  

    " Display or hide menu when using gVim
    function! ToggleGUICruft()
      if &guioptions=='i'
        exec('set guioptions=imTrL')
      else
        exec('set guioptions=i')
      endif
    endfunction

    map <F11> <Esc>:call ToggleGUICruft()<cr>

    " by default, hide gui menus
    set guioptions=i

endif


3 commentaires

Qu'en est-il de l'utilisation de make et de fabrication?


Je n'utilise pas : faire dans mon flux de travail, mais la commande est disponible. Cependant, je ne connais pas les limitations avec l'utilisation de GVIM au lieu du terminal.


@ user2384250: Les limitations semblent être décrites dans : Aide Gui-shell mais il reste vague.



0
votes

OK, apparemment, n'importe quel émulateur terminal que j'ai essayé (Xterm, gnome-terminal, ...) est capable de gérer 8 ou 256 couleurs en fonction des deux réglages X11, des pilotes VGA et de la valeur de la variable d'environnement Terme . Donc, le meilleur choix est de 256 couleurs et si vous recherchez quelque chose de mieux, vous n'avez pas d'autre choix que de choisir GVIM comme éditeur.


0 commentaires

3
votes

Les Colors Vanilla ne peuvent pas faire des hypothèses sur le nombre de couleurs, elles sont donc conservatrices et n'attendent que les 16 couleurs de base de l'époque PC.

Configuration de la couleur de Vim en 256 Couleur Xterm est un peu plus impliquée. , mais le résultat est agréable. Voici ce que j'utilise. Assurez-vous que votre xterm est en réalité une version de 256 couleurs (elle est par défaut sur Ubuntu). Cette configuration rendra à la fois Vim et GVIM utilisent les mêmes couleurs. En prime, si vous avez configuré votre XTERM pour utiliser les polices TrueType, il peut rendre la surbrillance en italique - voir les commentaires blancs (si la police le prend en charge; J'utilise * FACONNAME: DROID SANS MONO CODE>) . P>

Entrez la description de l'image ici p>

" If the xterm supports 256 colors, make sure TERM=xterm-256color.
" If it supports 256 colors but sets TERM=xterm, edit the appropriate
" resource file (~/.Xdefaults or $XAPPLRESDIR/XTerm) and add
" *termName: xterm-256color
" For mintty, select the xterm-256color TERM value in the options menu.
if &term == "xterm-256color"
  " Also for Cygwin's mintty.
  set t_Co=256
elseif $PROFILE_OS == "Solaris"
  set t_Co=256
elseif (&term == "xterm" || &term =~ "cons") && $TTY =~ "/dev/ttyv"
  " Adjust for FreeBSD syscons with ANSI colors.
  set t_Co=16
  map <Esc>[2~ i
  map <Esc>[3~ x
  map <Esc>[5~ <C-B>
  map <Esc>[6~ <C-F>
  colorscheme delek
elseif &term == "cygwin"
  " Adjust for Cygwin in a cmd.exe window.
  set t_Co=16
  colorscheme koehler
endif
"
" The cterm color numbers refer to XTerm colors in 256 color mode.
" Map rgb to cterm colors using <URL:https://gist.github.com/719710>.
" cterm=underline is rendered as italic with xterm +ulit
" gui=NONE turns off bold, italic.
"
" Normal must be set before colors "fg" and "bg" can be used.
highlight Normal ctermfg=216 ctermbg=233 guifg=#ffaf87 guibg=#121212

" pink        C 'c'
highlight Character
\ cterm=NONE      ctermfg=211     ctermbg=bg
\ gui=NONE        guifg=#ff87af   guibg=bg
" gray        This comment.
highlight Comment
\ cterm=underline ctermfg=250     ctermbg=bg
\ gui=italic      guifg=#bcbcbc   guibg=bg
highlight ColorColumn  cterm=NONE ctermfg=7   ctermbg=99  gui=NONE guifg=#c0c0c0 guibg=#875fff
" blue        if/then/else/fi.
highlight Conditional
\ cterm=NONE      ctermfg=27      ctermbg=bg
\ gui=NONE        guifg=#005fff   guibg=bg
" lightgreen  Numbers and quoted strings.
highlight Constant
\ cterm=NONE      ctermfg=82      ctermbg=bg
\ gui=NONE        guifg=#5fff00   guibg=bg
highlight Cursor
\ cterm=NONE      ctermfg=black   ctermbg=red
\ gui=NONE        guifg=black     guibg=red
highlight CursorColumn cterm=NONE ctermfg=7   ctermbg=97  gui=NONE guifg=#c0c0c0 guibg=#875faf
highlight DiffAdd      cterm=NONE ctermfg=8   ctermbg=24  gui=NONE guifg=#808080 guibg=#005f5f
highlight DiffChange   cterm=NONE ctermfg=8   ctermbg=56  gui=NONE guifg=#808080 guibg=#5f00d7
highlight DiffDelete   cterm=NONE ctermfg=8   ctermbg=88  gui=NONE guifg=#808080 guibg=#870000
highlight DiffText     cterm=NONE ctermfg=8   ctermbg=90  gui=NONE guifg=#808080 guibg=#870087
" Status line.
highlight Error
\ cterm=NONE      ctermfg=196     ctermbg=234
\ gui=NONE        guifg=#ff0000   guibg=black
highlight ErrorMsg
\ cterm=NONE      ctermfg=172     ctermbg=black
\ gui=NONE        guifg=orange    guibg=black
highlight Folded
\ cterm=NONE      ctermfg=112     ctermbg=235
\ gui=NONE        guifg=#87d700   guibg=#262626
highlight FoldColumn
\ cterm=NONE      ctermfg=112     ctermbg=235
\ gui=NONE        guifg=#87d700   guibg=#262626
" green       Function names (has()).
highlight Function
\ cterm=NONE      ctermfg=46      ctermbg=bg
\ gui=NONE        guifg=#00ff00   guibg=bg
" lightyellow Names.
highlight Identifier
\ cterm=NONE      ctermfg=139     ctermbg=bg
\ gui=NONE        guifg=#af87af   guibg=bg
highlight Include
\ cterm=NONE      ctermfg=50      ctermbg=bg
\ gui=NONE        guifg=#00ffd7   guibg=bg
highlight LineNr
\ cterm=underline ctermfg=244     ctermbg=237
\ gui=italic      guifg=#808080   guibg=#3a3a3a
highlight Macro
\ cterm=NONE      ctermfg=203     ctermbg=bg
\ gui=NONE        guifg=#ff5f5f   guibg=bg
" --More--
highlight MoreMsg
\ cterm=NONE      ctermfg=123     ctermbg=238
\ gui=NONE        guifg=#87ffff   guibg=#444444
" --INSERT--
highlight ModeMsg
\ cterm=NONE      ctermfg=123     ctermbg=238
\ gui=NONE        guifg=#87ffff   guibg=#444444
" Tilde and @ at the end of the window.
highlight NonText
\ cterm=bold      ctermfg=cyan    ctermbg=bg
\ gui=bold        guifg=cyan      guibg=bg
highlight Operator
\ cterm=NONE      ctermfg=129     ctermbg=bg
\ gui=NONE        guifg=#af00ff   guibg=bg
highlight PmenuSbar    cterm=NONE ctermfg=fg  ctermbg=32  gui=NONE guifg=fg      guibg=#0087d7
" medium blue #if/#else/#endif ${foo}
highlight PreProc
\ cterm=NONE      ctermfg=75      ctermbg=bg
\ gui=NONE        guifg=#5fafff   guibg=bg
" Hit-enter and yes/no questions.
highlight Question
\ cterm=NONE      ctermfg=green   ctermbg=bg
\ gui=NONE        guifg=green     guibg=bg
highlight Search
\ cterm=NONE      ctermfg=153     ctermbg=237
\ gui=NONE        guifg=cyan      guibg=gray10
" violett     <F11>, printf %s, `cmd`
highlight Special
\ cterm=bold      ctermfg=125     ctermbg=bg
\ gui=bold        guifg=#af005f   guibg=bg
" violett     <F11> in map
highlight SpecialKey
\ cterm=NONE      ctermfg=135     ctermbg=bg
\ gui=NONE        guifg=#af5fff   guibg=bg
highlight SpellBad
\ cterm=NONE      ctermfg=88      ctermbg=140
\ gui=NONE        guifg=#870000   guibg=#af87d7
highlight SpellCap
\ cterm=NONE      ctermfg=88      ctermbg=138
\ gui=NONE        guifg=#870000   guibg=#af8787
highlight SpellLocal
\ cterm=NONE      ctermfg=118     ctermbg=236
\ gui=NONE        guifg=#87ff00   guibg=#303030
highlight SpellRare
\ cterm=NONE      ctermfg=19      ctermbg=75
\ gui=NONE        guifg=#0000af   guibg=#5fafff
" lightblue   Keywords (highlight).
highlight Statement
\ cterm=NONE      ctermfg=44      ctermbg=bg
\ gui=NONE        guifg=#00d7d7   guibg=bg
highlight StatusLine
\ cterm=bold      ctermfg=41      ctermbg=239
\ gui=bold        guifg=#00d75f   guibg=#4e4e4e
highlight StatusLineNC
\ cterm=NONE      ctermfg=245     ctermbg=239
\ gui=NONE        guifg=#8a8a8a   guibg=#4e4e4e
" olive       static, const, volatile
highlight StorageClass
\ cterm=NONE      ctermfg=98      ctermbg=bg
\ gui=NONE        guifg=#875fd7   guibg=bg
" green       ''foo''
highlight String
\ cterm=NONE      ctermfg=35      ctermbg=bg
\ gui=NONE        guifg=#00af5f   guibg=bg
" titles for output from ":set all", ":autocmd" etc.
highlight Title
\ cterm=NONE      ctermfg=123     ctermbg=238
\ gui=NONE        guifg=#87ffff   guibg=#444444
" TODO XXX
highlight Todo
\ cterm=bold      ctermfg=161     ctermbg=181
\ gui=bold        guifg=#d7005f   guibg=#d7afaf
" lightbeige  int, long, ... ctermfg
highlight Type
\ cterm=NONE      ctermfg=170     ctermbg=bg
\ gui=NONE        guifg=#d75fd7   guibg=bg
" gray        Visual selection
highlight Visual
\ cterm=NONE      ctermfg=215     ctermbg=238
\ gui=NONE        guifg=burlywood guibg=gray30
" gray        Visual selection
highlight VisualNOS
\ ctermfg=215     ctermbg=238     ctermbg=bg
\ gui=NONE        guifg=#5090c0   guibg=gray30
highlight WarningMsg
\ cterm=NONE      ctermfg=green   ctermbg=black
\ gui=NONE        guifg=green     guibg=black
highlight WildMenu
\ cterm=NONE      ctermfg=23      ctermbg=148
\ gui=NONE        guifg=#005f5f   guibg=#afd700

if &term == "xterm-256color" && $DISPLAY == ""
  " Cygwin mintty doesn't do italic.
  highlight Comment cterm=NONE
  highlight LineNr  cterm=NONE
endif


2 commentaires

Oui, mais je pensais qu'un émulateur de terminal pouvait être capable de plus de 256 couleurs, cela semble être une véritable limite de tout émulateur terminal sous X11.


Essayez cette configuration. 256 n'est pas une limite. C'est plus que suffisant pour un terminal. Vous ne seriez pas capable de voir la différence dans de nombreuses couleurs du cube de couleur 6x6x6.