tmux не раскрашивает подсказку PS1

11

Недавно я решил изменить свою переменную PS1, чтобы она соответствовала некоторым довольно солнечным цветам для моего удовольствия от просмотра терминала. Когда нет сессии tmux, все отлично! Радуга, пони, единороги и отличительная подсказка! Круто!

Проблема в Tmux, однако. Я проверил, что значение PS1 - это то, что, как я ожидаю, будет таким же, как и в случае, когда tmux не работает, а именно \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\].

Все мои псевдонимы и т. Д. В моем .bash_profile также работают как положено. tmux также отображает цвета без происшествий, так же, echo -ne "\033[1;33m hi"как и ожидалось gls --color.

Текущая соответствующая строка в моем .bash_profile такова export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]", хотя изначально я искал сценарий, расположенный в файле .bash_prompt, для обработки некоторых условий и т. Д. Я попытался вернуться к более простой версии.

Выполнение bashзаставит приглашение раскраситься, но должно быть сделано на каждой панели. export PS1=[that long string I've already posted]не будет.

Мой .tmux.conf выглядит следующим образом:

set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

Соответствующие части .bash_profile:

export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
    test -z "$TMUX" && (tmux attach || tmux new-session)
fi

Я использую macOS Sierra, iTerm 2, я пробовал как текущую версию bash, основанную на homebrew, так и системную версию bash (в настоящее время она использует homebrew), tmux 2.4.

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

echo $TERMвозвращается xterm-256color.

Я удостоверился, что при выходе из tmux для проверки изменений настроек я вышел из tmux и что в настоящее время в системе не выполняется процесс tmux ps -ax | grep tmux.

Как ни странно, использование сценария .bash_prompt также меняет цвет, пока я делаю это на каждой панели tmux.

Я посмотрел на /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w и попытался добавить флаг --login после вызова bash в первой строке моего .tmux.conf. Запуск tmux с помощью tmux new bashзаставит первую панель окраситься, но последующие панели не будут.

Переменная $ PS1 приветствуется за кажущиеся все аспекты, кроме раскрашивания любого из полей.

У кого-нибудь есть идеи?

Дж. Сагуртон
источник
Попробуйте одиночные кавычки
Кевин
5
Установленный PS1вами параметр не имеет команды для изменения цвета. Опубликовать фактическую настройку, которая работает вне tmux. Кроме того, вы должны установить PS1in .bashrc, а не in .bash_profile: .bash_profileможет вообще не выполняться, и настройки могут быть переопределены позже.
Жиль "ТАК - перестань быть злым"

Ответы:

3

Ваш PS1 также дает мне черно-белый вывод.

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

$ echo $PS1
\[\033[01;31m\]\t \[\033[01;32m\]durrantm \[\033[02;36m\]\h \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"` \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$

git_branch - это функция bash, которая у меня есть:

git_branch () { 
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}

Твой против Моего:

введите описание изображения здесь

Это работает так же на OSX и Ubuntu

Майкл Даррант
источник
10

Мое решение этой проблемы было настройка

force_color_prompt=yes

по моему .bashrc. Теперь моя подсказка tmux имеет цвет.

Панки
источник
Не уверен, почему в tmux это ведет себя по-разному, но это тоже помогло мне.
Мэтт Лэйси
Я хотел бы указать следующее: вам нужно выполнить команду tmux, а затем запустить сеанс tmux source ~/.bashrc. Вы должны сделать это в каждой панели.
evaristegd
Спасибо, эта работа для меня также на Ubuntu 18.04 гном-терминал.
Intijk
1

На моей машине решение состоит в том, чтобы добавить

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

к ~/.tmux.conf.

Сиюань Рен
источник