多路复用器
- 我有
alias tmux='TERM=xterm-256color tmux'
在~/.bashrc
- 并且
set-option -g default-terminal "screen-256color"
也在~/.tmux.conf
在konsole
:
$ echo $TERM
xterm
在tmux
:
$ echo $TERM
screen-256color
颜色仍然不起作用tmux
:
boris@vasilisa:~$ PROMPT_GREEN=`tput setf 2`
boris@vasilisa:~$ PROMPT_RED=`tput setf 4`
boris@vasilisa:~$ PROMPT_BLACK=`tput setf 8`
boris@vasilisa:~$ PS1='\[$PROMPT_RED\]\w\[$PROMPT_GREEN\]:\[$PROMPT_BLACK\] '
结果是黑白颜色提示。亦无色带ls
。
屏幕
我有force_color_prompt=yes
在~/.bashrc
.仍然:
boris@vasilisa:~$ PROMPT_GREEN=`tput setf 2`
boris@vasilisa:~$ PROMPT_RED=`tput setf 4`
boris@vasilisa:~$ PROMPT_BLACK=`tput setf 8`
boris@vasilisa:~$ PS1='\[$PROMPT_RED\]\w\[$PROMPT_GREEN\]:\[$PROMPT_BLACK\] '
不会使提示变得丰富多彩。但与tmux
--相比,ls
列出带有颜色的文件。
所以
我想tput setf
只是不应该与终端多路复用器一起使用?
编辑
我必须更改setf
为setaf
,并且还更改颜色代码:
PROMPT_BLACK=`tput setaf 0`
PROMPT_RED=`tput setaf 1`
PROMPT_GREEN=`tput setaf 2`
PS1='\[$PROMPT_RED\]\w\[$PROMPT_GREEN\]:\[$PROMPT_BLACK\] '
我不需要别名tmux
,设置
设置选项-g 默认终端“screen-256color”
就~/.tmux.conf
足够了。
所以我把
# colorful prompt
PROMPT_BLACK=`tput setaf 0`
PROMPT_RED=`tput setaf 1`
PROMPT_GREEN=`tput setaf 2`
PS1='\[$PROMPT_RED\]\w\[$PROMPT_GREEN\]:\[$PROMPT_BLACK\] '
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto --group-directories-first'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# man pages with color!
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
# enable colors:
force_color_prompt=yes
在两者中:~/.bashrc
和~/.bash_login
然后颜色在 中起作用tmux
。
答案1
正如您完全正确地猜测的那样,在( ) terminfosetf
条目的上下文中设置前景色的功能不正确。您应该使用(使用 ANSI 转义设置前景色)。xterm-256color
screen-256color
setaf
$ echo $TERM
screen-256color
$ infocmp -1 | grep setf
$ infocmp -1 | grep setaf
setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
笔记:
- 您不需要这样做
alias tmux='TERM=xterm-256color tmux'
,请确保您的终端模拟器在启动时报告正确的值TERM=xterm-256color
- 如果 (1) 为真,那么
tmux
将在其中正确设置您的TERM
toscreen-256color
,如果您在 Linux 控制台上运行,它也会正确设置它screen.linux
,可能存在您需要操作它的情况,但通常不需要
答案2
对我有用的是将以下几行放入我的 .bashrc 文件中:
if [ "x$DISPLAY" != "x" ]
then
export HAS_256_COLORS=yes
alias tmux="tmux -2"
if [ "$TERM" = "xterm" ]
then
export TERM=xterm-256color
fi
else
if [ "$TERM" == "xterm" ] || [ "$TERM" == "xterm-256color" ]
then
export HAS_256_COLORS=yes
alias tmux="tmux -2"
fi
fi
if [ "$TERM" = "screen" ] && [ "$HAS_256_COLORS" = "yes" ]
then
export TERM=screen-256color
fi
让我知道这是否有帮助。
请注意,该解决方案基于此邮政!