Среда:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- GNOME Terminal 3.22.1 Использование VTE версии 0.46.1 + GNUTLS
- VIM - Vi IMproved 8.0 (2016 сентябрь 12, составлено 22 февраля 2017 года 16:26:11)
- tmux 2.2
Недавно я начал использовать tmux и заметил, что цвета в Vim меняются в зависимости от того, работаю я внутри или вне tmux. Ниже приведены скриншоты Vim снаружи (слева) и внутри (справа) tmux при просмотре Git diff:
Моя TERM
переменная
- Вне tmux:
xterm-256color
- Внутри Tmux:
screen-256color
Vim сообщает об этих типах терминалов, как и ожидалось (через :set term?
):
- Вне tmux:
term=xterm-256color
- Внутри Tmux:
term=screen-256color
Vim также сообщает, что оба экземпляра работают в 256-цветном режиме (через :set t_Co?
):
- Вне tmux:
t_Co=256
- Внутри Tmux:
t_Co=256
Есть много подобных вопросов относительно того, как заставить Vim работать в 256-цветном режиме внутри tmux (лучший ответ, который я нашел здесь ), но я не думаю, что это моя проблема, учитывая приведенную выше информацию.
Я могу продублировать проблему за пределами tmux, если я запускаю Vim с типом терминала, установленным в screen-256color
:
$ TERM=screen-256color vim
Так что это заставляет меня поверить, что есть просто некоторая разница между возможностями терминала xterm-256color
и screen-256color
терминалами, которая вызывает разницу в цвете Что приводит к вопросу, поставленному в заголовке: что конкретно в возможностях терминала вызывает различия в цветах Vim? Я вижу различия между работой :set termcap
внутри и снаружи tmux, но мне любопытно, какие переменные действительно вызывают разницу в поведении.
Независимо от предыдущего вопроса, возможно ли, чтобы цвета Vim были последовательными при работе внутри или снаружи tmux? Вот некоторые вещи, которые я пробовал:
- Явная установка терминала по умолчанию, который использует tmux,
~/.tmux.conf
на различные значения (некоторые вопреки рекомендациям FAQ по tmux ):
установить -g default-terminal "screen-256color" установить -g default-terminal "xterm-256color" установить -g default-terminal "screen.xterm-256color" установить -g default-terminal "tmux-256color"
- Начиная использовать Tmux
tmux -2
.
Во всех случаях Vim продолжал отображать разные цвета внутри tmux.
script
, запуститьvim
, выйти,vim
а затем выйти изscript
оболочки и прикрепить полученныйtypescript
файл? Затем повторите те же шаги сTERM=screen-256color vim
вместо.xterm-256color
версии (поиск «38; 5;» в файле), но не могу вscreen-256color
. Например, везде, где есть\e[38;5;81m
inxterm-256color
(цвет № 81 из 256-цветовой палитры, средний синий оттенок), вместо негоscreen-256color
содержится\e[34m
(стандартный синий из 8-цветовой палитры). Поэтому главный вопрос - почему vim не использует 256-цветовую палитру в случаеTERM=screen-256color
.xterm-256color
версия, кажется, печатает экран дважды, сначала с устаревшими цветами, а затем с 256-цветовой палитрой. Ищите, например, «F1» в файле, вы найдете два совпаденияxterm-256color
, первое с\e[34m
цветом, второе с\e[38;5;81m
. Я не знаю, что здесь происходит.set -g default-terminal "screen.xterm-256color"
в~/.tmux.conf
и перезагрузить конфигурации в tmux (<Cs>: источник-файл ~ / .tmux.conf) работал для меня (вопрос выделения). thxОтветы:
tmux
не поддерживает возможность terminfobce
(стирание заднего цвета), котораяvim
проверяет, чтобы решить, использовать ли ее схему «цвета по умолчанию».Эта характеристика
tmux
была упомянута несколько раз -источник
У меня была похожая проблема раньше. Комментарии в синем в Vim было трудно читать. В
.tmux.conf
Я установил это:И в
.vimrc
:Теперь это выглядит следующим образом и работает как в Gnome Terminal, так и в Cygwin:
источник
bg=dark
в моем vimrc исправила это.$TERM
как внутри, так и снаружиtmux
был"xterm-256color"
и явно задание фона делал это и для меня. Спасибо!stterm
тем, что воxfce4-terminal
всем выглядело удобно (комментарии,cyan
вместоblue
которых очень трудно читать с темным фоном). после этого изменения все работает нормально. Но не забудьте добавитьunlet! skip_defaults_vim source $VIMRUNTIME/defaults.vim
в файл vimrc, чтобы использовать подсветку синтаксиса и т. Д.Благодаря анализу @ egmont того, какие цвета выводил Vim
TERM=screen-256color
, я был вдохновлен взглянуть на цветовую схему, которую использует Vim в двух сценариях.Vim сообщает, что использует
default
цветовую схему в обоих случаях. Я подумал, что это странно, потому чтоdefault
цветовая схема в Fedora 25 (/usr/share/vim/vim80/colors/default.vim
) не соответствует цветам, которые я на самом деле вижу, когдаTERM=xterm-256color
. Если я явно установлю цветовую схему с помощью:colorscheme default
когдаTERM=xterm-256color
, внешний вид Vim изменится на тот, когдаTERM=screen-256color
. Чтобы вернуть цвета к тому, какими они были, когда я впервые запустил Vim, мне пришлось использоватьron
цветовую схему. Прогресс!Я нашел ответ Ask Ubuntu, который предполагает, что когда Vim сообщает, что использует
default
цветовую схему, это не обязательно означает,default.vim
скорее, какую-то цветовую схему для конкретной темы. Как указывает ответ, темная тема (которую я использую) соответствуетron
цветовой схеме, как я обнаружил выше. (Хотя этот пост относится к Ubuntu, я предполагаю, что OP использовал GNOME.)Я также нашел другой вопрос, который, кажется, описывает ту же проблему, что и я. Я сталкивался с этим во время поиска, прежде чем опубликовать этот вопрос, но по какой-то причине цветовая схема не показалась мне актуальной.
Я закончил тем, что сделал то, что сделал @LapshinDmitry в своем ответе и явно установил
colorscheme ron
в моем~/.vimrc
файле. Теперь, запускаю ли я Vim внутри или снаружи tmux, цвета выглядят одинаково. Единственным недостатком является то, что если я когда-либо изменю тему рабочего стола с темного на светлый, Vim не будет автоматически переключаться на цветовую схему светлой темы по умолчанию, которая, по-видимому, таковаpeachpuff
. Я могу жить с этим, так как я вряд ли когда-нибудь смогу изменить свою тему.Я не собираюсь принимать этот ответ, потому что я рассматриваю явную установку цветовой схемы в моем
~/.vimrc
обходном пути, а не решение. Если кто-то может объяснить, почему Vim загружает другую цветовую схему «по умолчанию» в зависимости от значенияTERM
, я с радостью приму этот ответ, так как мне больше интересно понять причину. Я подозреваю, что это как-то связано с тем, как Vim интерпретирует возможности терминала между двумя файлами terminfo.источник
vim
себя ведет. В конце концов,bce
способность не должна иметь ничего общего с доступным количеством цветов.bce
работоспособность терминала, 2) если присутствует, выберите цветовую схему «A», 3) в противном случае выберите цветовую схему «B». Я считаю, что глубина цвета одинакова в обоих случаях (то есть 256 цветов, какt_Co
показано). Это просто , что цветовая схема «B» на моей системе происходит только использовать 8-цветовую палитру , даже если 256 цветов можно (я думаю , что объясняет то , что вы наблюдали в анализе машинописи, пожалуйста , поправьте меня , если я ошибаюсь). Помните, что после запуска:colorscheme ron
я вижу escape-последовательности из 256 цветов в том же сеансе Vim.vim
имеет действительно странные дизайнерские решения.Это правильно и работает для меня. Попробуйте это с другим терминалом (я использую urxvt), чтобы увидеть, является ли Терминал Gnome проблемой.
Также проверьте
COLORTERM
(мой установлен наrxvt
) иunset TERMCAP
.источник
TERM
isrxvt-unicode-256color
), используя соответствующий,~/.Xdefaults
и, к сожалению, все еще наблюдал разные цвета внутри и снаружи tmux. Для сценария gnome-терминала,COLORTERM
естьtruecolor
иTERMCAP
пусто как внутри, так и снаружи tmux. Для сценария urxvtCOLORTERM
находитсяrxvt-xpm
снаружи иtruecolor
внутри tmux, аTERMCAP
пусто как внутри, так и снаружи tmux.:help xterm-true-color
или попробуйте использовать более стандартный конфиг Vim.termguicolors
свои.vimrc
и:set termguicolors?
отчетыnotermguicolors
в обоих случаях. Я посмотрю на тему справки, на которую вы ссылались; Благодарность!Для моей справки позже, когда я, несомненно, Google это настройка моей следующей машины.
Используйте эти инструкции, чтобы получить необходимые двоичные файлы и библиотеки DLL в PATH Git bash:
https://blog.pjsen.eu/?p=440
Используйте эти команды для настройки:
источник