Come abilito il supporto a colori in Vim?

94

Ho un bel Vim colorscheme ( xoria256 ) e sembra fantastico in GVim, ma quando uso normale vim in Terminale, il colorscheme è solo parzialmente supportato, ad esempio viene usato il colore di sfondo melanzana semitrasparente di default. Come faccio a rendere Terminal fedelmente il mio Vim colorscheme?

    
posta David Siegel 28.07.2010 - 21:53

5 risposte

74

Il terminale GNOME supporta 256 colori, ma non ne annuncia il supporto. È possibile ignorare il rilevamento automatico di Vim inserendo quanto segue:

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

nel tuo ~ / .vimrc.

Nota : se usi lo schermo GNU, mangerà felicemente quei codici a 256 colori e li convertirà in 16 colori base. Una soluzione migliore è di cambiare TERM in xterm-256color prima di avviare screen / vim.

Aggiornamento per il 2017 : se hai un Vim sufficientemente recente (7.4.1799 o più recente) e un emulatore di terminale sufficientemente avanzato (xterm o gnome-terminal basato su una versione sufficientemente recente di VTE ), puoi :set termguicolors e terminal vim userà colori a 24 bit completi come definito dal tuo tema vim usando highlight guifg=#rrggbb guibg=#rrggbb .

    
risposta data Marius Gedminas 28.07.2010 - 22:55
44

Una soluzione più generale è installare il termine "xterm-256color". In 10.04 penso che sia installato di default. In precedenza era necessario installare "ncurses-term" per ottenerlo.

Quindi imposta il termine type in .bashrc con qualcosa di simile al seguente:

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

Se preferisci avere solo la capacità di 256 colori per determinati programmi (forse ne confonde altri) usa invece:

TERM=xterm-256color myprogram

e forse impostalo come alias per il programma.

Quindi controlla le funzionalità del colore del terminale con:

$ tput colors
256

Potresti aver ancora bisogno dell'impostazione di vim sopra per poterlo riconoscere. La maggior parte delle applicazioni riconoscerà automaticamente i 256 colori (se possono usarli).

Emacs ha anche temi di colori che sono molto meglio con 256 colori. Per verificare se funziona a 256 colori:

M-x list-colors-display

256colors.pl è uno script Perl che visualizzerà tutti i colori nel tuo terminale.

    
risposta data Dave Jennings 04.08.2010 - 15:10
36

Basta includere la riga sottostante in $HOME/.bashrc (preferibilmente nell'ultima riga del file):

export TERM="xterm-256color"

E salvalo. Dopo, riavvia il tuo gnome-terminal. Questo cambiamento sarà disponibile non solo in vim, ma per tutte le tue applicazioni terminali.

Per verificare se funziona, esegui questo piccolo script :

#!/usr/bin/env python
# Copyright (C) 2006 by Johannes Zellner, <[email protected]>
# modified by [email protected] to fit my output needs
# modified by [email protected] 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")

Successivamente, vedrai qualcosa di simile al seguente (dipende dal tema del tuo gnome-terminal):

    
risposta data crncosta 25.11.2010 - 17:21
1

Bene, puoi sempre configurare Gvim per renderlo simile a Vim. Devi solo creare un file ~ / .gvimrc e incollare in esso questi trucchi di personalizzazione:

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

Non penso che questo risolva il tuo problema, ma chi lo sa; -)

    
risposta data wassimans 25.11.2010 - 16:18
0

Ho creato un profilo separato per Vim che utilizza un colore solido, opaco sullo sfondo. Lo cambio manualmente ogni volta che uso Vim. Non sono sicuro che esista o meno un metodo migliore. Mi piacerebbe pensarlo.

    
risposta data DLH 28.07.2010 - 22:17

Leggi altre domande sui tag