Vim в tmux отображает неправильные цвета


57

Я установил Ubuntu 11.10. Затем скачал тему Solarized для терминала Gnome. С терминала мой vim выглядит хорошо: плагин vim-powerline отображается правильно, а синтаксис выделен правильными цветами. Но когда я запускаю tmux и запускаю vim - подсветка синтаксиса использует только один основной цвет, а vim-powerline не отображает цвета. Я посмотрел на FAQ по vim-powerline, и решение должно быть следующей строкой в ​​.tmux-config:

set -g default-terminal "screen-256color"

Но это не работает. Я посмотрел на TERM, и он возвращает 'xterm', поэтому я попытался:

set -g default-terminal "xterm-256color"

Но это тоже не поможет.

Это единственная строка в .tmux.config. В .vimrc у меня есть следующие строки:

call pathogen#infect()
set nocompatible
set encoding=utf-8
set laststatus=2
let g:Powerline_symbols = 'fancy'
set t_Co=256
syntax enable
set background=dark
colorsheme solarized

Понятия не имею, почему вы не получили голосов, даже от тех, кто получил пользу от ответов на свои вопросы. +1 от меня. Вопрос здравый, и он помог мне решить и мою проблему, найдя его.
0xC0000022L

Ответы:


54

Запуск tmux со следующим флагом исправляет это для меня:

tmux -2

со страницы руководства tmux:

-2 Заставьте tmux предположить, что терминал поддерживает 256 цветов.


1
Хороший намек. Когда версия экрана Cygwin начала давать сбой vim, я снова очень быстро переключился на tmux. Любить это.
Грандбоу

1
К вашему сведению - это было единственное, что сработало для меня с tmux 2.3 и последним Powerline. Цвета в строке состояния vim и tmux были действительно странными.
Пластическая роща

28

У меня та же проблема на Ubuntu 10.04 LTS с использованием Byobu 5.17 и tmux 1.5 с использованием последней версии Solarize из репозитория GitHub.

Я смог частично исправить это, указав $TERMв .bashrcфайле:

export TERM="xterm-256color"

Кажется также, что на панели запуска есть ошибка, но она еще не устранена: byobu не отображает dircolors должным образом


2
Это единственное, что сработало для меня!
Транквиль

Также работал на Ubuntu 14.04 с tmux 2.0
Dukedave

Это решение для OS X, а также ха-ха
Джей

27

это сработало для меня

в .tmux.conf

set -g default-terminal "screen-256color"

в .vimrc

set term=screen-256color

удалить старый термин значение для .vimrc, поверьте мне, это будет работать


1
Не работает для меня tmux 1.8, vim 7.4.1816, ubuntu x86_64 с ядром 3.13.0-92-generic. FYI.
Фестанг

1
У меня это работало без настроек .vimrc, только .tmux.conf.
Geison Santos

Настройка .tmux.conf сделала свое дело для меня!
Хессельбом

4

Тип терминала должен быть установлен на screen-256color в ~ / .tmux.conf. Он сообщает tmux, как установить переменную среды TERM, чтобы она не работала в текущем сеансе - запустите новый и протестируйте.

Если это все еще не работает, вы можете запустить Vim используя:

TERM=screen-256color vi

Это устанавливает переменную среды только для одноразового выполнения vi.

Если из-за этого vim не отображает все цвета, проверьте, скомпилирован ли ваш терминал (я не уверен, что вы тестируете только с одним эмулятором терминала) для поддержки цветовой палитры 256 - скачайте и запустите приведенный ниже скрипт Perl из эмулятор терминала в вопросе.

http://scie.nti.st/dist/256colors2.pl

PS. Полагаю, вы уже исправили опечатку, замеченную Джорданброком.


2

Как объясняет Марчин Камински, если TERM=screen-256color vim <filename> работает для вас, просто добавьте следующее к вашему.bashrc

TERM=screen-256color

и следуя в вашем .tmux.conf:

set -g default-terminal "screen-256color"

У меня была такая же проблема, у меня это работает.


Это был единственный, который работал для меня (tmux 1.8).
Яманеко

На самом деле, я только что проверил, и TERM=screen-256colorмне достаточно было только изменение , независимо от установки tmux в screen-256colorили xterm-256color. Спасибо!
Яманеко

1

В последней строке есть опечатка .vimrc.

Так должно быть colorscheme solarized

Не уверен, что это поможет :)


0

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

По сути, параметр .tmux.conf работает и TERMустанавливается в значение screen-256color, но затем tmux открывает bash и вызывает ваш .bashrc, который устанавливает TERMчто-то еще (возможно xterm-256color).

Решение состоит в том, чтобы установить TERMв настройках вашего терминала, а не в .bashrc. Если это не вариант, вы можете проверить TERMвнутри .bashrc и не изменять его, если он уже есть screen-256color.


0

В оболочке начиная tmux, убедитесь , что $TERMлибо xterm-256colorили screen-256color. Посмотрите, как изменить $ TERM :

  • Обычно изменение ~/.Xresources- лучший способ (если поддерживается)
  • Для gnome-терминала см. Https://askubuntu.com/a/379472.

В качестве альтернативы, как сказал Holy Mackerel , вы можете принудительно настроить tmux на 256color через:

$ tmux -2

0

[Solucion] [1], который может нарушить ваше зрение и сделать Vim неприятным для использования в течение длительного периода времени.

Вы можете исправить это, запустив: set term = screen-256color в Vim или перезапустив Vim в среде TERM = screen-256color, как рекомендуют некоторые эксперты: http://sunaku.github.io/vim-256color-bce.html


2
Что вы подразумеваете под [Solucion] [1]? Вы пытались сослаться или дать ссылку на другой ответ? Ответы не всегда появляются в одном и том же порядке. Я рекомендую расширить это, чтобы уточнить, что вы говорите, может «нарушить ваше зрение и сделать Vim неприятным для использования в течение длительного периода времени».
Элия ​​Каган

0

В ваш .bashrc или .zshrc просто добавьте

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi

а также начать с Tmux -2


0

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

yum install vim-jellybeans

или же

mkdir -p ~/.vim/colors
cd ~/.vim/colors
curl -O https://raw.githubusercontent.com/nanotech/jellybeans.vim/master/colors/jellybeans.vim
touch ~/.vimrc 
sed -i '/colorscheme/d' ~/.vimrc
echo colorscheme jellybeans >> ~/.vimrc

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

Если вы не хотите устанавливать ничего, кроме простого быстрого решения, проигнорируйте выше и попробуйте это в vim

:colo ron Вы также можете заменить 'ron' следующими наборами и даже восстановить solo default

blue 
darkblue 
default
delek
desert
elflord
evening
koehler
morning.vim
murphy
pablo
peachpuff
ron
shine
slate
torte
zellner

и сохранить в .vimrc

colo ron
syntax on

Кто бы ни дал отрицательный отзыв. позвольте мне услышать вескую причину.
Seandex
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.