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, я спробував як поточну версію basbre bash, так і системну 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. Крім того , ви повинні встановити PS1в .bashrc, а НЕ .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


11

Моє рішення цієї проблеми було встановленням

force_color_prompt=yes

в моєму .bashrc. Тепер мій рядок tmux має колір.


Не впевнений, чому це поводиться по-різному в tmux, ніж поза нею, але це зробило трюк і для мене.
Метт Лейсі

Я чорнилом, вам слід вказати це: те, що вам потрібно зробити, це запустити команду tmux, а потім всередині запуску сеансу tmux source ~/.bashrc. Це потрібно зробити на кожній панелі.
evaristegd

Дякую, ця робота для мене також на gnome-терміналі Ubuntu 18.04.
intijk

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.