it-swarm.it

Come abilito il supporto a colori in Vim?

Ho un adorabile schema di colori Vim ( xoria256 ) e ha un aspetto brillante in GVim, ma quando uso il normale vim in Terminale, lo schema dei colori è supportato solo parzialmente - ad esempio, il semi predefinito viene utilizzato il colore di sfondo trasparente alla melanzana. Come posso fare in modo che Terminal renda fedelmente il mio sistema di colori Vim?

97
David Siegel

Il Terminale GNOME supporta 256 colori, ma non pubblicizza il suo 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 la schermata GNU, mangerà felicemente quei codici a 256 colori e li convertirà in 16 colori di base. Una soluzione migliore è 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), tu can :set termguicolors e terminal vim useranno colori a 24 bit come definiti dal tema vim usando highlight guifg=#rrggbb guibg=#rrggbb.

78
Marius Gedminas

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

Quindi impostare il termine digitare in .bashrc con qualcosa di simile al seguente:

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

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

TERM=xterm-256color myprogram

e forse impostarlo come alias per il programma.

Quindi controlla le funzionalità del colore del tuo terminale con:

$ tput colors
256

Potresti aver ancora bisogno dell'impostazione di vim sopra per far sì che vim lo riconosca. La maggior parte delle applicazioni riconoscerà automaticamente i 256 colori (se possono usarli).

Emacs ha anche temi di colore che sono molto meglio con 256 colori. Per verificare se è in grado di eseguire 256 colori:

M-x list-colors-display

256colors.pl è lo script Perl che mostrerà tutti i colori nel tuo terminale.

44
Dave Jennings

Includi la riga seguente nel tuo $HOME/.bashrc (preferibilmente nell'ultima riga del file):

export TERM="xterm-256color"

E salvalo. Dopo, riavvia il tuo terminale gnome. Questa modifica sarà disponibile non solo in vim, ma per tutte le applicazioni del terminale.

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 tuo tema gnome-terminal):

terminal

36
crncosta

Bene, puoi sempre configurare Gvim per farlo sembrare Vim. Devi solo creare un file ~/.gvimrc e incollarlo in 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 chissà ;-)

1
wassimans

Ho creato un profilo separato per Vim che utilizza un colore solido e opaco sullo sfondo. Passo semplicemente ad esso ogni volta che uso Vim. Non sono sicuro che esista o meno un metodo migliore. Mi piacerebbe pensarlo.

0
DLH