Получение 256 цветов для работы в tmux


177

У меня есть 256 цветов работает только штрафом в konsole,. Я думал, что tmuxпопробую, потому что, в отличие от экрана, он поддерживает viрежим. Однако я обнаружил, что цвета моего приглашения отображаются, и это, скорее всего, потому что у меня есть приглашение в 256-цветном режиме. Что мне нужно сделать, tmuxчтобы распознать все 256 цветов?


2
tmux -2Я должен был сделать это в терминаторе, и я был несколько удивлен. -2Флаг говорит tmux , чтобы заставить использование 256 цветов ... ли любит ваш терминал или нет ... Дун Дун dunnn: P
Дилан

Ответы:


253

Tmux FAQ явно советует настройке TERM ни к чему, кроме экрана или экрана-256 - цветные в файле инициализации оболочки, так что не делайте этого!

Вот что я использую:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux

и в моем .tmux.conf:

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

Псевдоним tmuxк " tmux -2" также должен помочь.


4
Мне больше нравится способ установить его в .tmux.conf ... использование оболочки для установки просто не кажется правильным
xenoterracide

6
Weird. Вам не нужно tmux -2на OSX, но вам это нужно с Gnome Terminal. Спасибо за информацию, добавленную в мои псевдонимы!
FX

1
В Kubuntu 13.10 одна только настройка .tmux.conf не вернула мне мои 256 цветов (что вывело подсветку в визуальном режиме vim), но псевдоним сработал. Конечно, предпочел бы решение только для файла .tmux.conf.
Джейкоб Далтон

1
ssh'd в машину с Ubuntu (из OS X Terminal), все, что мне было нужно, - это стандартный терминал .tmux.conf.
маркеры дуэлянтов

2
для меня кажется, что все, что мне нужно сделать, это TERM=screen-256color tmuxбез создания .tmux.confфайла. Я что-то пропустил?
Joelostblom

39

Попробуйте явно установить 256 цветов в вашем bashrc или zshrc:

export TERM=xterm-256color

или же

export TERM=screen-256color

Если у вас есть проблемы с тем, что tmux неправильно очищает цвета фона при использовании настройки термина экрана, вы можете попробовать:

export TERM=screen-256color-bce

1
во-первых, это моя настройка TERM по умолчанию ... Я только что попробовал другие 2, и моя подсказка все еще не показывает цвета, когда я вхожу в tmux. (Я хотел бы отметить, что tmux показывает цвета внизу) ... кажется, что когда я вхожу в tmux, он сбрасывает TERM в TERM = screen ... возможно, есть способ переопределить это в конфигурации?
ксенотеррацид

nvm ... я полагаю, что включение его в rc моей оболочки работает ... как досадно, что он игнорирует переменную TERM env, которая устанавливается, когда я выполняю tmux ... я думаю, мне придется поместить условие в мой rc.
ксенотеррацид

1
-bce не совместим с tmux. Tmux не поддерживает стирание цвета фона:
Дастин Киркланд

1
У меня была эта проблема с roxterm. Надеюсь, что добавление roxterm поможет людям найти то же решение, что и я. Я бы в конечном итоге в Vim и выбор линий заставил бы их исчезнуть. Исключительно сложно найти. По умолчанию roxterm настраивается с помощью $ TERM = xterm, что не годится.
BeepDog

5
-1, вы не должны устанавливать ни одно из условий в вашем файле инициализации оболочки. Установка этого параметра xterm-256colorтакже переопределит его внутри tmux, а установка его screen-256colorвне tmux может привести к появлению ошибок.
nyuszika7h

19

В соответствии с часто задаваемыми вопросами по tmux , добавьте это в свой ~/.tmux.conf:

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

Затем добавьте этот псевдоним для tmux:

alias tmux='tmux -2'

Нет необходимости переопределять TERMпеременную в вашем профиле или при запуске tmux.

Дополнительная информация: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim


2
Конфигурирования tmux мне было достаточно; Мне не нужно было устанавливать псевдоним (хотя это, вероятно, не повредит).
анишпатель

Настройка tmux сама по себе работает для меня. Псевдоним был недостаточным.
Гарри Морено

12

Новейшая версия ncurses поставляется с записью terminfo tmux-256color ( FAQ часто упоминает об этом). Например, преимущество использования tmux-256color над screen-256color заключается в том, что курсив отображается правильно (экран не поддерживает курсив).

Так что, если у вас последняя версия ncurses, будет работать и следующее:

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

Я хотел бы отметить, что это решение, кажется, требует tmux 2.6или лучше
zzxyz

3

Это действительно важное замечание, если вы используете Ubuntu старше Bionic (18.04). Если вы работаете tmux 2.1или старше, и, вероятно, так и есть, в принципе, ни один совет, который вы читаете в Интернете о tmux, не сработает ... ни для чего.

tmux -Vэто простой тест для этого. Если вы видите 2.1или старше, вы можете собрать tmux из исходного кода, или вы можете добавить неофициальный репозиторий. Я обновил свой tmux с помощью:

sudo add-apt-repository ppa:/hnakamur/tmux
sudo apt update
sudo apt upgrade

Лично, после обновления до 2.6, 1) мои ключи работают лучше, 2) онлайн-советы действительно работают, 3) мои цвета не безумны. Большое улучшение

(Вот ссылка на страницу хранилища, кстати): https://launchpad.net/~hnakamur


2

Я не мог объяснить, почему это работает, но это решило проблему для меня.

~ / .Tmux.conf

set-option -g default-command bash

1
Я попробовал это как последнее средство, и на удивление это сработало!
v0d1ch

1

Это мое решение .... Я редактирую свой файл .bashrc и добавляю это

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

Надеюсь, это работает в вашем


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