Vraag Hoe schakel ik full-color ondersteuning in Vim in?


Ik heb een mooi Vim-kleurenschema (xoria256) en het ziet er schitterend uit in GVim, maar als ik normaal gebruik vim in Terminal wordt het kleurenschema slechts gedeeltelijk ondersteund; zo wordt bijvoorbeeld de standaard semi-transparante aubergine achtergrondkleur gebruikt. Hoe laat Terminal mijn Vim-kleurenschema getrouw weergeven?


94
2017-07-28 19:53


oorsprong


Zelfs het standaardkleurenschema ziet er beter uit met 256 kleuren. Zonder uw vraag had ik het nooit ontdekt. Dit zou de standaard moeten zijn. - Mihai Capotă


antwoorden:


GNOME Terminal ondersteunt 256 kleuren, maar adverteert niet voor de ondersteuning ervan. U kunt de autodetectie van vim onderdrukken door het volgende te plaatsen:

if $COLORTERM == 'gnome-terminal'
  set t_Co=256
endif

in je ~ / .vimrc.

Notitie: als u het GNU-scherm gebruikt, zal het die 256-kleurencodes met plezier opeten en ze omzetten in 16 basiskleuren. Een betere oplossing is om TERM te wijzigen in xterm-256color voordat het scherm / vim wordt gestart.

Update voor 2017: als u een voldoende recente Vim (7.4.1799 of nieuwer) en een voldoende geavanceerde terminalemulator (xterm of gnome-terminal op basis van een voldoende recente versie van VTE) hebt, kunt u :set termguicolors en terminal vim gebruikt volledige 24-bits kleuren zoals gedefinieerd door je vim-thema met highlight guifg=#rrggbb guibg=#rrggbb.


74
2017-07-28 20:55



Dit werkte niet, mijn terminal is nog steeds aubergine! - David Siegel
Wat kan ik zeggen - het werkt voor mij als ik dat doe :set t_Co=256 | colorscheme xoria256. - Marius Gedminas
Je zou kunnen testen op de aanwezigheid van gnome-terminal in je vimrc en vervolgens de t_Co-variabele op de juiste manier instellen. bijv .: if $COLORTERM == 'gnome-terminal' `stel t_Co = 256` in endif  (Ik weet niet zeker hoe ik meerdere regelblokken met code in opmerkingen moet toevoegen, dus voeg nieuwe regels toe vóór en na de ingestelde verklaring) - Matt
Beter om gnome-256color te gebruiken voor gnome-terminal en screen-256color voor scherm. - graywh
@trusktr google up CSApprox en CSExact vim-extensies. - Marius Gedminas


Een algemenere oplossing is om de term type "xterm-256color" te installeren. In 10.04 denk ik dat het standaard is geïnstalleerd. Eerder moest u "ncurses-term" installeren om het te krijgen.

Stel vervolgens de term type in. Bashrc met zoiets als het volgende:

if [ -n "$DISPLAY" -a "$TERM" == "xterm" ]; then
    export TERM=xterm-256color
fi

Als je liever de 256 kleurenmogelijkheden hebt voor bepaalde programma's (misschien verwart het andere), gebruik dan in plaats daarvan:

TERM=xterm-256color myprogram

en misschien zet dat als een alias voor het programma.

Controleer vervolgens uw terminalkleurmogelijkheden met:

$ tput colors
256

Je hebt misschien nog steeds de VIM-instelling hierboven nodig om VIM te laten herkennen. De meeste toepassingen herkennen de 256 kleuren automatisch (als ze ze kunnen gebruiken).

Emacs heeft ook kleurenthema's die veel beter zijn met 256 kleuren. Om te controleren of het geschikt is voor 256 kleuren:

M-x list-colors-display

256colors.pl is Perl-script dat alle kleuren in uw terminal weergeeft.


44
2017-08-04 13:10



Gnome-256color is eigenlijk meer correct voor gnome-terminal. - graywh
werkt het in zsh, ik gebruik geen bash? - Vinit Kumar
Dave, ik ben er niet 100% zeker van of het klopt, maar dit is een oneliner-versie  van je commando: [[ -n "$DISPLAY" && "$TERM" = "xterm" ]] && export TERM=xterm-256color. Bevestig en voel je vrij om het aan het bericht toe te voegen. - JJD
@JJD zou moeten werken, maar u kunt altijd gebruiken ; om alles een one-liner te maken. - Martin Ueding
@ dave-jennings De link naar het script is verbroken. - Martin Ueding


Neem gewoon de regel hieronder op in uw $HOME/.bashrc (bij voorkeur in de laatste regel van het bestand):

export TERM="xterm-256color"

En bewaar het. Start daarna je gnome-terminal opnieuw op. Deze wijziging is niet alleen beschikbaar in vim, maar voor al uw terminaltoepassingen.

Om te controleren of het werkt, moet je dit beetje uitvoeren script:

#!/usr/bin/env python
# Copyright (C) 2006 by Johannes Zellner, <johannes@zellner.org>
# modified by mac@calmar.ws to fit my output needs
# modified by crncosta@carloscosta.org to fit my output needs

import sys
import os

def echo(msg):
    os.system('echo -n "' + str(msg) + '"')

def out(n):
    os.system("tput setab " + str(n) + "; echo -n " + ("\"% 4d\"" % n))
    os.system("tput setab 0")

# normal colors 1 - 16
os.system("tput setaf 16")
for n in range(8):
    out(n)
echo("\n")
for n in range(8, 16):
    out(n)

echo("\n")
echo("\n")

y=16
while y < 231:
    for z in range(0,6):
        out(y)
        y += 1

    echo("\n")


echo("\n")

for n in range(232, 256):
    out(n)
    if n == 237 or n == 243 or n == 249:
        echo("\n")

echo("\n")
os.system("tput setaf 7")
os.system("tput setab 0")

Daarna zul je zoiets als het volgende zien (hangt af van je gnome-terminal thema):

terminal


36
2017-11-25 16:21



Werkt als een bedel, bedankt! - user10962
Ik vraag me af waarom het script in Python wordt gemaakt als het alleen shell-opdrachten bevat. Er zijn loops, whiles, ifs en functies in Bash, weet je;) - MestreLion


Je kunt Gvim altijd configureren om het op Vim te laten lijken. Je hoeft alleen maar een ~ / .gvimrc-bestand te maken en deze aanpassingsstricks erin te plakken:

set guioptions-=r  " no scrollbar on the right
set guioptions-=l  " no scrollbar on the left
set guioptions-=m  " no menu
set guioptions-=T  " no toolbar

Ik denk niet dat dit je probleem oplost, maar wie weet ;-)


1
2017-11-25 15:18





Ik heb een afzonderlijk profiel gemaakt voor Vim dat op de achtergrond een solide, ondoorzichtige kleur gebruikt. Ik schakel er handmatig naar over wanneer ik Vim gebruik. Weet niet zeker of er een betere methode is. Ik zou het graag willen denken.


0
2017-07-28 20:17



Je kunt gebruiken if has("gui_running") in je vimrc om gui-specifieke opties in te stellen. - Matt