TERM=tmux-256color로 인해 "터미널 열기 오류" 발생

TERM=tmux-256color로 인해 "터미널 열기 오류" 발생

활성화하고 싶습니다이탤릭체tmux(macOS Big Sur 11.3의 iTerm2 내). 나는 이것을 다음과 같이 설정하여 달성했습니다..tmux.conf

set -g default-terminal "tmux-256color"

homebrew를 사용하여 ncurses 6.2를 설치하고 경로의 첫 번째 위치에 설정했습니다. .zshrc:

  export PATH="$HOMEBREW_PREFIX/opt/ncurses/bin:$PATH"

이렇게 변경한 후에는 기울임꼴을 사용할 수 있습니다.

그러나 이제 ncurses에 의존하는 여러 프로그램을 시작할 수 없습니다: ncdu(1.15.1) 및 nano(2.0.6) 둘 다 오류가 있습니다:

Error opening terminal: tmux-256color.

내 생각에는 이 설정을 지원하지 않는 것 같습니다 TERM. 이상하게도 ncdu내 Raspbian 시스템에서는 1.12가 실행됩니다.tmux-256color

뭐가 문제 야?ncdu프로그램이 호환 되고 nano호환되어야 하지 않습니까 tmux-256color?

해킹된 해결 방법을 찾았습니다(macOS의 경우, Raspbian에서는 필요하지 않음). 에서 변수를 명시적 TERM으로 다시 .zshrc모든 것(기울임꼴 및 절차)이 작동합니다.

if [[ "$TERM" == "tmux-256color" ]]; then
  export TERM=screen-256color
fi

하지만 제가 이해한 바에 따르면 TERM자기 설정은 절대 금물입니다. 환경이 올바르게 설정되도록 해야 합니다. 실제로 작동한다는 tmux-256color사실에 놀랐습니다. screen-256color? 이 해킹이 결국 내 면전에서 폭발하게 될까요?

답변1

tmux의 터미널 설명은 infocmp의 출력을 보면 짐작할 수 있듯이 화면의 터미널 설명에서 파생됩니다. 그러나 화면 터미널 설명을 사용하면 수정된 기능 키와 커서 모양을 변경하는 기능을 잃게 됩니다. 줄이 그어진 문자도 작동하지 않습니다. 실제로 기울임꼴은 작동하지 않습니다. 왜냐하면 화면 터미널 설명이 기울임꼴을 나열하지 않기 때문입니다(아마도 tmux에는 내장된 해결 방법이 있을 수 있습니다. 답변이 파일에 있을 가능성이 더 높습니다 .tmuxrc).

ncdu 및 nano가 tmux-256color 터미널을 거부하게 만드는 문제는 MacOS가 매우 오래된 버전의 ncurses(5.7, 2008년부터), 특정 프로그램을 연결하는 데 사용됩니다. 나노인카탈리나(ncdu가 이후 버전에서 출시될 수도 있지만 "여러 개"는 문제가 됩니다. 기본 MacOS 시스템의 6개 프로그램만 실제로 Curses를 사용하기 때문입니다.

MacPorts와 homebrew는 ncurses의 최신 버전을 제공합니다(6.2, 2020년부터). 그리고6.1 (2018), 숫자가 너무 커서 부호 있는 16비트 형식에 맞지 않는 터미널 설명을 위한 새로운 이진 형식입니다. 이전 버전에서는 이 바이너리 형식을 무시하지 않습니다.tmux-256color(에 추가2015년 5월).

업그레이드는 옳은 일입니다(ncurses는 12년 이상 뒤쳐져 있으며 Apple은 약간 느리고 믿을 수 없습니다). MacPorts와 homebrew는 모두 최신 버전의 nano와 동일한 버전의 ncdu를 제공합니다.

관련 정보