$TERM
tmux 외부 xterm-256color
(zsh가 있는 "일반" 터미널)에 있어야 하지만 screen-256color
tmux 내부에 있어야 합니다.
먼저 다음을 시도합니다.
export TERM='xterm-256color'
내 항목에 추가하세요~/.zshrc
.set -g default-terminal "screen-256color"
내 항목에 추가~/.tmux.conf
이제 터미널(예: xterm)을 열면 TERM
예 xterm-256color
, 맞습니다. 하지만 tmux를 실행하면 TERM
다시 xterm-256color
!
그런 다음 내 것을 주석 처리해 보았습니다 ~/.zshrc
. 이제 터미널을 열면 TERM
이고 xterm
, tmux를 실행하면 TERM
입니다 screen-256color
. 따라서 tmux TERM
에서 먼저 설정 하면 로 .zshrc
설정되고 이를 실행하는 셸(예: zsh)이 읽힌 다음 zsh가 읽혀지고 로 재설정되는 것 같습니다 .TERM
screen-256color
.zshrc
TERM
xterm-256color
그렇다면 "일반" 터미널과 tmux 에서 이 작업을 어떻게 수행할 수 있습니까 TERM
?xterm-256color
screen-256color
답변1
TERM 환경 변수는 터미널 역할을 하는 애플리케이션에 의해 설정되어야 합니다. 이것이 요점입니다. 실행 중인 프로그램이 어떤 터미널이 사용되고 있는지, 그리고 어떤 유형의 기능을 지원하는지 알 수 있도록 하는 것입니다.
Zsh는 터미널이 아닙니다. 껍질입니다. 특별한 일을 하고 싶다면 TERM이 무엇으로 설정되어 있는지 관심을 가질 수 있지만 책임을 져서는 안 됩니다.환경그것. 대신, 상위 셸에서 예상되는 동작을 학습하기 위해 스크립트나 다른 하위 프로세스에서 사용할 수 있는 ZSH_VERSION과 같은 변수를 설정하는 일을 담당합니다.
대신, 사용 중인 터미널 애플리케이션의 구성을 확인하고 자체적으로 올바르게 보고하도록 요청해야 합니다. 예를 들어, 구성 값에 사용되는 파일 에 다음 줄을 추가하여 ~/.Xdefaults
xterm에 대해 이 작업을 수행 할 수 있습니다.
xterm*termName: xterm-256color
gnome-terminal이 어리석은 일을 하는 것처럼 보입니다. 자체 구성을 갖는 대신 xterm 구성을 읽는 것입니다. 이는 경우에 따라 도움이 될 수 있지만 vte-256color로 더 정확하게 설정해야 합니다. 이는 이 제품(및 일부 다른 VTE 기반 터미널 에뮬레이터)에 대한 오랜 불만인 것 같습니다. ㅏ일반적인 방법이 문제에 대한 해결책은 설정한 다른 값을 활용하는 것입니다.
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=vte-256color
fi
하지만 그러면 tmux 문제로 돌아가게 되므로 이미 "screen-256color" 또는 "screen"과 같은 것이라면 TERM을 재설정하지 않고 문제를 해결해야 합니다.
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=vte-256color
fi
다른 터미널의 경우 올바른 구성 루틴을 찾아야 합니다.
답변2
.zshrc에 다음을 입력하세요.
[[ -n $TMUX ]] && export TERM="xterm-256color"
그리고 .tmux.conf에서
set -g default-terminal "screen-256color"