Como habilito o suporte a cores no Vim?

96

Eu tenho um lindo esquema de cores Vim ( xoria256 ) e parece brilhante no GVim, mas quando eu uso o% normalvim no Terminal, o esquema de cores é apenas parcialmente suportado - por exemplo, a cor de fundo da beringela semitransparente padrão é usada. Como faço para o Terminal renderizar fielmente o meu esquema de cores do Vim?

    
por David Siegel 28.07.2010 / 21:53

5 respostas

77

O Terminal GNOME suporta 256 cores, mas não anuncia seu suporte. Você pode sobrescrever a autodetecção do vim colocando o seguinte:

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

no seu ~ / .vimrc.

Nota : se você usar a tela GNU, ela será feliz em comer esses códigos de 256 cores e convertê-los em 16 cores básicas. Uma correção melhor é alterar o TERM para o xterm-256color antes de iniciar a tela / vim.

Atualização para 2017 : se você tiver um Vim suficientemente recente (7.4.1799 ou mais recente) e um emulador de terminal suficientemente avançado (xterm ou gnome-terminal baseado em uma versão suficientemente recente do VTE ), você pode :set termguicolors e vim terminal usarão cores completas de 24 bits, conforme definido pelo seu tema vim usando highlight guifg=#rrggbb guibg=#rrggbb .

    
por Marius Gedminas 28.07.2010 / 22:55
44

Uma solução mais geral é instalar o termo tipo "xterm-256color". Em 10.04, acho que está instalado por padrão. Anteriormente, você precisava instalar "ncurses-term" para obtê-lo.

Em seguida, defina o tipo de termo em .bashrc com algo como o seguinte:

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

Se preferir ter apenas a capacidade de 256 cores para determinados programas (talvez confunda alguns outros), use:

TERM=xterm-256color myprogram

e talvez defina isso como um alias para o programa.

Em seguida, verifique os recursos de cor do seu terminal com:

$ tput colors
256

Você ainda pode precisar da configuração do vim acima para que o vim a reconheça. A maioria dos aplicativos reconhecerá as 256 cores automaticamente (se elas puderem usá-las).

O Emacs também tem temas de cores que são muito melhores com 256 cores. Para verificar se é possível executar 256 cores:

M-x list-colors-display

256colors.pl é um script em Perl que exibe todas as cores do seu terminal.

    
por Dave Jennings 04.08.2010 / 15:10
36

Basta incluir a linha abaixo no seu $HOME/.bashrc (de preferência na última linha do arquivo):

export TERM="xterm-256color"

E salve. Depois, reinicie o seu terminal gnome. Esta alteração estará disponível não apenas no vim, mas para todas as suas aplicações de terminal.

Para verificar se funciona, execute este pequeno 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")

Depois disso, você verá algo como o seguinte (depende do tema do gnome-terminal):

    
por crncosta 25.11.2010 / 17:21
1

Bem, você sempre pode configurar o Gvim para parecer com o Vim. Você só precisa criar um arquivo ~ / .gvimrc e colar esses truques de personalização:

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

Eu não acho que isso resolve o seu problema, mas quem sabe; -)

    
por wassimans 25.11.2010 / 16:18
0

Eu fiz um perfil separado para o Vim, que usa uma cor sólida e opaca no fundo. Eu apenas mudo manualmente para ele sempre que uso o Vim. Não tenho certeza se existe ou não um método melhor. Eu gostaria de pensar assim.

    
por DLH 28.07.2010 / 22:17