멀티플렉서

멀티플렉서

멀티플렉서

나는 팔로우한다tmux에서 256색 사용:

  • 내가 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

추측한 대로 setf() terminfo 항목의 전경색을 설정하는 기능이 올바르지 않습니다. (ANSI 이스케이프를 사용하여 전경색 설정)을 사용해야 합니다.xterm-256colorscreen-256colorsetaf

$ 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)이 true이면 거기에서 to가 tmux올바르게 설정될 것입니다 . Linux 콘솔에서 실행하는 경우에도 올바르게 설정됩니다. 조작해야 하는 상황이 있을 수 있지만 일반적으로 그렇지 않습니다.TERMscreen-256colorscreen.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

이것이 도움이 된다면 알려주세요.


이 솔루션은 다음을 기반으로 합니다.우편 엽서!

관련 정보