Terminal

讓 256 種顏色在終端多路復用器中工作

  • April 23, 2014

多路復用器

我遵循Getting 256 colors to work in tmux

  • 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\] '

不會使提示變得豐富多彩。但與tmuxls列出帶有顏色的文件相反。

所以

我想tput setf不應該與終端多路復用器一起使用?

編輯

我必須更改setfsetaf,並更改顏色程式碼:

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.

你猜對了,在( ) terminfo 條目setf的上下文中設置前景色的能力並不正確。您應該使用(使用 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,

筆記:

  1. 您不需要這樣做alias tmux='TERM=xterm-256color tmux',請確保您的終端仿真器在啟動時報告正確的值TERM=xterm-256color
  2. 如果 (1) 為真,那麼tmux將正確設置您的TERMtoscreen-256color在其中,例如,如果您在 linux 控制台上執行,它也會正確設置 to screen.linux,可能存在您需要操作它的情況,但通常不需要

引用自:https://unix.stackexchange.com/questions/126075