Как включить полноцветную поддержку в Vim?

92

У меня прекрасная цветовая схема Vim ( xoria256 ), и она выглядит блестящей в GVim, но когда я использую нормальный vim в терминале, цветовая схема поддерживается только частично - например, используется стандартный полупрозрачный цвет фона баклажана по умолчанию. Как я могу сделать Терминал точно отображать мою цветовую схему Vim?

    
задан David Siegel 28.07.2010 в 21:53
источник

5 ответов

73
Терминал GNOME поддерживает 256 цветов, но не рекламирует его поддержку. Вы можете переопределить автоопределение vim, поставив следующее:

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

в ~ ~ .vimrc.

Примечание . Если вы используете экран GNU, он с радостью поедет эти 256-цветные коды и преобразует их в базовые 16 цветов. Лучшее решение - изменить TERM на xterm-256color перед запуском screen / vim.

Обновление для 2017 : если у вас достаточно недавний Vim (7.4.1799 или новее) и достаточно продвинутый эмулятор терминала (xterm или gnome-terminal на основе достаточно недавней версии VTE ), вы можете :set termguicolors , а терминал vim будет использовать полные 24-битные цвета, как определено вашей темой vim, используя highlight guifg=#rrggbb guibg=#rrggbb .

    
ответ дан Marius Gedminas 28.07.2010 в 22:55
источник
44

Более общее решение - установить термин «xterm-256color». В 10.04 я думаю, что он установлен по умолчанию. Раньше вам нужно было установить «ncurses-term», чтобы получить его.

Затем установите тип термина в .bashrc следующим образом:

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

Если вы предпочитаете использовать только 256 цветов для определенных программ (возможно, это смущает некоторые другие), используйте вместо этого:

TERM=xterm-256color myprogram

и, возможно, установите это как псевдоним для программы.

Затем проверьте возможности цвета терминала с помощью:

$ tput colors
256

Вам все еще может понадобиться установка vim выше, чтобы узнать, что vim. Большинство приложений распознают 256 цветов автоматически (если они могут их использовать).

Emacs также имеет цветные темы, которые намного лучше с 256 цветами. Чтобы проверить, работает ли его 256-цветный режим:

M-x list-colors-display

256colors.pl - это Perl-скрипт, который отображает все цвета в вашем терминале.

    
ответ дан Dave Jennings 04.08.2010 в 15:10
36

Просто включите строку ниже в свой $HOME/.bashrc (желательно в последней строке файла):

export TERM="xterm-256color"

И сохраните его. После этого перезапустите свой гном-терминал. Это изменение будет доступно не только в vim, но и для всех ваших приложений терминала.

Чтобы проверить, работает ли это, запустите этот маленький скрипт :

#!/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")

После этого вы увидите что-то вроде следующего (зависит от вашей темы gnome-terminal):

    
ответ дан crncosta 25.11.2010 в 17:21
1

Ну, вы всегда можете настроить Gvim, чтобы он выглядел как Vim. Вам просто нужно создать файл ~ / .gvimrc и вставить в него эти трюки настройки:

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

Я не думаю, что это решает вашу проблему, но кто знает; -)

    
ответ дан wassimans 25.11.2010 в 16:18
0

Я сделал отдельный профиль для Vim, который использует твердый, непрозрачный цвет в фоновом режиме. Я просто переключаюсь вручную, когда я использую Vim. Не уверен, есть ли лучший метод. Я бы так подумал.

    
ответ дан DLH 28.07.2010 в 22:17