나는 나의 필요가 $TERM
있을 수 xterm-256color
있지만 ( “일반”zsh을 가진 터미널)에서 TMUX의 외부 screen-256color
내부 TMUX합니다.
먼저 나는 시도했다 :
- 추가
export TERM='xterm-256color'
내에~/.zshrc
. set -g default-terminal "screen-256color"
내 추가~/.tmux.conf
I 단자 (예를 들어, xterm 등)을 열 때 지금, TERM
이다 xterm-256color
, 올바른이다. 그러나 tmux를 실행하면 TERM
다시 나타납니다 xterm-256color
!
그런 다음 내 라인을 주석 처리하려고했습니다 ~/.zshrc
. 이제 터미널을 열 때 TERM
is xterm
이고 tmux를 실행할 때 TERM
입니다 screen-256color
. 내가 설정 한 경우 것 같다 그래서 TERM
에 .zshrc
TMUX 먼저, 세트 TERM
에 대한 screen-256color
실행은 (zsh을 인) 쉘,을, 그리고 zsh을 읽기 .zshrc
및 재설정 TERM
에 xterm-256color
.
그럼, 어떻게 만들 TERM
수 xterm-256color
“일반”터미널에서, 그리고 screen-256color
TMUX에서?
답변
TERM 환경 변수는 터미널 역할을하는 응용 프로그램에서 설정해야합니다. 이것은 문제의 요점입니다. 내부에서 실행중인 프로그램에 사용중인 터미널과 지원하는 기능의 종류를 알려주십시오.
Zsh는 터미널이 아닙니다. 껍질입니다. 특별한 일을하려는 경우 TERM이 무엇으로 설정되어 있는지 상관 할 수 있지만 설정에 대한 책임은 없습니다 . 대신 ZSH_VERSION과 같은 변수를 설정하여 스크립트 나 다른 자식 프로세스에서 부모 셸에서 예상되는 동작을 이해하는 데 사용할 수 있습니다.
대신, 사용중인 터미널 응용 프로그램에 대한 구성을 확인하고 제대로보고하도록 요청해야합니다. 예를 들어 ~/.Xdefaults
, 구성 값에 사용 하는 파일 에이 행을 추가하여 xterm에 대해이를 수행 할 수 있습니다 .
xterm*termName: xterm-256color
gnome-terminal은 xterm 구성이 자신의 것이 아니라 무엇을 읽는지 바보 같은 일을하는 것처럼 보입니다. 어떤 경우에는 도움이 될 수 있지만 gnome-256color로 더 올바르게 설정해야합니다. 이것은 오랫동안 (그리고 다른 VTE 기반 터미널 에뮬레이터에 대한) 그립처럼 보입니다. 이를 해킹 하는 일반적인 방법 은 설정 한 다른 값을 이용하는 것입니다.
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=gnome-256color
fi
그러나 이것은 tmux의 문제로 되돌아갑니다. 따라서 이미 “screen-256color”또는 “screen”과 같은 경우 TERM을 재설정하지 않음으로써이를 고려해야합니다.
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=gnome-256color
fi
다른 터미널의 경우 올바른 구성 루틴을 찾아야합니다.
답변
.zshrc 안에 넣습니다.
[[ $TMUX = "" ]] && export TERM="xterm-256color"
그리고 .tmux.conf 내부
set -g default-terminal "screen-256color"