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的当前自制版本和系统bash(当前正在使用自制版本)tmux 2.4。

我还在touch testing_touch_from_bash_profile带有两个窗格的tmux会话中放置了.bash_profile,杀死了一个窗格,打开了一个窗格并验证了该文件实际上是已创建的。

echo $TERM返回xterm-256color

我已经确保退出tmux来测试设置更改时已经退出tmux,并且当前没有通过tmux进程在系统上运行ps -ax | grep tmux

奇怪的是,只要我在每个tmux窗格中进行操作,采购.bash_prompt脚本也会更改颜色。

我看过/programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w,并尝试在第一行的bash调用后添加--login标志我的.tmux.conf。使用启动tmux tmux new bash将使第一个窗格着色,但随后的窗格将不着色。

$ PS1变量似乎在所有方面都具有荣誉,除了为任何字段着色。

谁有想法?


尝试单引号
Kevin

5
PS1您发布的设置没有任何更改颜色的命令。发布在tmux之外有效的实际设置。另外,您应该PS1在中设置.bashrc,而不是中的设置.bash_profile.bash_profile可能根本不会执行,并且以后可能会覆盖设置。
吉尔斯(Gilles)'所以

Answers:


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 '19

谢谢,这项工作对我来说也适用于Ubuntu 18.04 gnome-terminal。
intijk

1

在我的机器上,解决方案是添加

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

~/.tmux.conf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.