Vim colorschemes не меняет цвет фона
Я пытаюсь применить различные цветовые схемы в vim, которые я видел в сети. Какую бы схему я ни выбрал, фон остается белым, хотя скриншоты применяемой схемы показывают, что фон должен быть окрашен.
В некоторых схемах некоторые цвета фона изменяются, но пространство справа от строк, содержащих текст, по-прежнему остается белым.
Я использую Vim 7.2 на Mac. Я только начал возиться с приложениями, отличными от gui, поэтому все должно быть в значительной степени, как это было из коробки.
Связаны ли с ним общие настройки для окна терминала?
При запуске macvim все выглядит нормально. Его только при запуске vim из терминала все выглядит странно.
Ответы
Ответ 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]'