Vim 색상이 tmux 내부와 외부에서 다르게 보이는 이유는 무엇입니까?

Vim 색상이 tmux 내부와 외부에서 다르게 보이는 이유는 무엇입니까?

환경:

  • 페도라 25(4.9.12-200.fc25.x86_64)
  • GNOME 터미널 3.22.1은 VTE 버전 0.46.1 +GNUTLS를 사용합니다.
  • VIM - Vi 개선된 8.0(2016년 9월 12일, 2017년 2월 22일 16:26:11에 편집됨)
  • 멀티플렉서 2.2

저는 최근에 tmux를 사용하기 시작했는데 tmux 내부에서 실행하는지 외부에서 실행하는지에 따라 Vim의 색상이 변하는 것을 관찰했습니다. 다음은 Git diff를 볼 때 Vim 외부(왼쪽)와 tmux 내부(오른쪽)의 스크린샷입니다.

여기에 이미지 설명을 입력하세요.

TERM변수는

  • 외부 tmux:xterm-256color
  • tmux 내부:screen-256color

Vim은 다음 터미널 유형을 예상대로 보고합니다( 를 통해 :set term?):

  • 외부 tmux:term=xterm-256color
  • tmux 내부:term=screen-256color

Vim은 또한 두 인스턴스가 모두 256색 모드에서 실행되고 있다고 보고합니다( 전달 :set t_Co?).

  • 외부 tmux:t_Co=256
  • tmux 내부:t_Co=256

tmux에서 Vim을 256색 모드로 실행하는 것과 관련해 비슷한 질문이 많이 있습니다. (제가 찾은 가장 좋은 대답은 다음과 같습니다.여기), 그러나 위의 정보를 고려하면 그것이 내 문제는 아니라고 생각합니다.

Vim을 실행하고 터미널 유형을 다음과 같이 설정하면 screen-256color:

$ TERM=screen-256color vim

xterm-256colorscreen-256color그래서 이것은 색상 차이를 유발하는 터미널 기능 간에 약간의 차이가 있다고 믿게 만듭니다 . 이는 제목에서 제기된 질문으로 이어집니다.터미널 기능에서 Vim의 색상이 다르게 나타나는 이유는 무엇입니까? tmux 내부와 외부에서 실행하는 것의 차이점을 알 수 있지만 :set termcap실제로 어떤 변수가 동작의 차이를 일으키는지 궁금합니다.

이전 질문과는 별개로,tmux 내부 또는 외부에서 Vim 색상을 일관되게 유지할 수 있습니까? 내가 시도한 몇 가지 사항은 다음과 같습니다.

  • tmux에서 사용하는 기본 터미널을 ~/.tmux.conf다양한 값으로 명시적으로 설정합니다(일부는 tmux의 권장 사항을 위반함).자주하는 질문):
    -g 기본 터미널 "screen-256color" 설정
    -g 기본 터미널 "xterm-256color" 설정
    -g 기본 터미널 "screen.xterm-256color" 설정
    -g 기본 터미널 "tmux-256color" 설정
  • tmux -2다음을 사용하여 tmux를 시작하십시오.

모든 경우에 Vim은 tmux 내에서 계속해서 다른 색상을 표시합니다.

답변1

이전에도 비슷한 문제가 발생했습니다. Vim의 파란색 주석은 읽기 어렵습니다. 내 설정 에서는 .tmux.conf다음과 같습니다.

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

그리고 .vimrc:

set background=dark

이제 다음과 같으며 Gnome Terminal 및 Cygwin에서 작동합니다. 여기에 이미지 설명을 입력하세요.

답변2

tmuxterminfo 기능은 지원되지 않습니다.bce(배경색 지우기), vim"기본 색상" 구성표를 사용할지 여부를 확인합니다.

이 기능은 tmux여러 번 언급되었습니다.

답변3

다음 설정이 ~/.tmux.conf저에게 효과적입니다.

# file ~/.tmux.conf
# ...

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

# make colors inside tmux look the same as outside of tmux
# see https://github.com/tmux/tmux/issues/696
# see https://stackoverflow.com/a/41786092
set-option -ga terminal-overrides ",xterm-256color:Tc"

# ...

답변4

.tmux.conf나를 위해 RGB 색상을 얻으려면 다음을 추가해야했고들어오지 못하게 하다색상 차이.

set -ag terminal-overrides ",xterm-256color:RGB"
set  -g default-terminal "tmux-256color"

관련 정보