Подтвердить что ты не робот

Vim colorschemes не меняет цвет фона

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

В некоторых схемах некоторые цвета фона изменяются, но пространство справа от строк, содержащих текст, по-прежнему остается белым.

Я использую Vim 7.2 на Mac. Я только начал возиться с приложениями, отличными от gui, поэтому все должно быть в значительной степени, как это было из коробки.

Связаны ли с ним общие настройки для окна терминала?

При запуске macvim все выглядит нормально. Его только при запуске vim из терминала все выглядит странно.

4b9b3361

Ответ 1

У меня это в моем .vimrc, и он решил эту проблему для меня, используя PuTTY.

set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE

Важно загружать цветовую схему перед настройками ctermbg в .vimrc, потому что они должны переопределять те же самые, что установлены цветами. Это также означает, что вы не можете переключать цветовую схему во время работы Vim и ожидать, что она будет работать.

Ответ 2

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

Если вы посмотрите на фактический сайт для colorscheme здесь: Молокайский сайт

вы увидите вопрос, очень похожий на ваш. Здесь дается ответ, в котором предлагается попробовать команду :set t_Co=256 в вашем vimrc, чтобы узнать, исправляет ли она вещи:

"- Убедитесь, что вы используете консольный терминал с 256 цветами, не все из них (особенно на Mac). Возможно, вам придется явно заставить Vim использовать это, выполнив" set t_Co = 256 "на вашем .vimrc файл. - Консоль Windows хорошо... полностью неподдерживается, что делает только 16 цветов, поэтому ее беспорядок "

Ответ 3

В linux я имел export TERM=xterm-256color в моем .bashrc. Это заставило vim выглядеть так (после установки set t_Co=256):

Vim looks with molokai theme before fixing TERM variable

Когда я удалил эту строку из моего .bashrc и открыл новый терминал (exec bash не сделал этого) Это то, что я получаю:

Vim looks with molokai theme after fixing TERM variable

Ответ 4

Терминалы обычно ограничены 256 цветами, в то время как графический интерфейс ограничен только глубиной цвета среды рабочего стола, обычно 2 ^ 32.

Итак, даже если есть много цветовой схемы vim, доступной вокруг, неявно они часто предназначены для графического интерфейса и не будут работать для версии терминала.

Если вы посмотрите на цветовые схемы на vim.org, часто упоминается GUI или 256. Поэтому вам нужно выбрать, какой из них использовать в зависимости от контекста.

Чтобы преобразовать схему графического интерфейса в терминал, вы можете использовать следующий плагин: CSApprox.

Вы также можете использовать другую цветовую схему в зависимости от контекста, добавьте следующее в свой .vimrc:

if has("gui_running")  
    colorscheme [using any color you want]  
else  
    colorscheme [using 256 colors]  
endif  

Ответ 5

Я думаю, что проблема может заключаться в том, как цвет по умолчанию изменяется на colorscheme. Я просмотрел несколько цветов, которые устанавливают по умолчанию:

set background=light

или

set background=dark

Не знаю, какие ограничения есть. Я не думаю, что они работают в терминалах.

В любом случае вы должны иметь возможность вручную установить фон в терминале, используя подсветку "Обычный". Вставьте его в место перед большинством команд "привет" в файле colorscheme, и он должен предоставить настройки по умолчанию, с которыми они будут работать. Например:

hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White

Измените ctermfg (цветной терминал переднего плана) и ctermbg (цветной фон терминала) на то, что вы хотите (или какой бы цвет вы не ожидали увидеть в цветовой схеме, но теперь не видите). (Помните, однако, если в цветовой системе уже есть настройка для hi Normal, это, вероятно, не является вашей проблемой.)

Для ctermbg и ctermfg вы можете вводить имена цветов, но я думаю, что существует только довольно ограниченное число:  черный Темно-синий Темно-зеленый DarkCyan Темно-красный DarkMagenta Браун, DarkYellow LightGray, LightGrey, Серый, Серый DarkGray, DarkGrey Синий, LightBlue Зеленый, LightGreen Cyan, LightCyan Красный, LightRed Magenta, LightMagenta Желтый, LightYellow Белый

В противном случае вы можете использовать число от 0 до 255 вместо имени цвета. Или этот script дает приблизительную идею и позволяет вам увидеть, как вы могли бы настроить другие имена цветов: Vim script с настройками цвета

Кроме того, существует ряд сценариев, которые помогут вам использовать или конвертировать цвета, написанные для gui для использования с cterm.. Например,

Поддержка Colorscheme для cterm

Does the overall settings for the terminal window have something to do with it?

Возможно, но я уверен, что правильно написанная цветовая схема Vim переопределит любые настройки терминала, которые вы сделали. По крайней мере, они делают для меня в Windows и на Ubuntu.,.

Ответ 6

Связаны ли с ним общие настройки для окна терминала?

Да, параметры терминала переопределяют параметры vim (по крайней мере, в OSX и iTerm). Например, у меня есть следующий script in/Users/[username]/. Bashrc

setBackground() {  
  osascript -e "tell application \"iTerm\"  
    set current_terminal to (current terminal)  
    tell current_terminal  
      set current_session to (current session)  
      tell current_session  
        set background color to $1  
      end tell  
    end tell  
  end tell"  
}  

vim() {
       (setBackground "{65025,65025,65025}" &)
       (exec vim $*)
}

Вышеупомянутая команда переназначения терминала vim для выполнения изменения цвета фона перед выполнением vim. Фоновая цветовая функция - это applescript (я скопировал script откуда-то...). Он работает в iTerm. Я верю, что вы можете адаптировать это для работы с терминалом (apple product + apple script → должен работать).

ш,
Юха

Ответ 7

У меня была такая же проблема и выяснилось, что ответ на этот вопрос на самом деле трижды, где исправления только двух из трех недостаточно. Вам нужно будет:

  • Поддержка 256 цветов в вашем терминале - Putty с настройками по умолчанию имеет это

  • Vim должен признать, что терминал имеет 256-цветную способность: "установите t_Co = 256" в вашем .vimrc сделает это

  • Цветовая схема должна поддерживать цветные терминалы с атрибутами ctermbg и ctermfg для подсветки, а не только gui * -версии. http://www.vim.org/scripts/script.php?script_id=2682 должны быть в состоянии предоставить их автоматически, а CSApprox, который я использую, наиболее определенно, но требует либо + gui-comppiled Vim, либо достаточно недавняя версия Vim (7.3 или новее).

Третий, по-видимому, является наиболее часто отсутствующим требованием. Я написал короткую статью на своих собственных ошибках по этому вопросу только сегодня утром: http://codeandlife.com/2013/09/22/vim-colorschemes-with-putty-aka-gui-vs-xterm-color256/

Заключительная информация, которая произошла со мной при попытке разных настроек, заключалась в том, что когда цвета работали, только области экрана с текстом имели правильный цвет фона. Повторная проверка установки терминала шпатлевки "Использовать цвет фона для удаления экрана" исправила эту последнюю проблему для меня.

Ответ 8

Это работает для меня для переключения фона:

colorscheme hemisu
function! g:ToggleBackground()
  if &background != 'dark'
    set background=dark
  else
    set background=light
    colorscheme hemisu
  endif
endfunction
nnoremap <silent> <F3> :call g:ToggleBackground()<CR>

Также попробуйте установить светлый фон на что-то вроде ctermbg=231, чтобы tmux обрабатывал его лучше.

Ответ 9

Используйте это правило, если вы используете Vim через SSH:

  • Добавьте в локальный .bashrc:

    export TERM=xterm-256color
    
  • Удалить из .bashrc любые определения TERM.

Если вы используете один и тот же .bashrc для обоих (локальных и удаленных), используйте временную переменную среды и никогда установить TERM глобально:

alias color-ssh='TERM=xterm-256color ssh [email protected]'