Vim 색상이 tmux의 내부와 외부에서 다르게 보이는 이유는 무엇입니까? 것과 관련하여

환경:

  • 페도라 25 (4.9.12-200.fc25.x86_64)
  • 그놈 터미널 3.22.1 VTE 버전 0.46.1 + GNUTLS 사용
  • VIM-Vi IMproved 8.0 (2016 년 12 월 12 일, 컴파일 2 월 22 2017 16:26:11)
  • tmux 2.2

최근에 tmux를 사용하기 시작했으며 Vim의 색상이 tmux의 내부 또는 외부에서 실행 중인지에 따라 변하는 것을 관찰했습니다. 아래는 Git diff를 보면서 tmux의 외부 (왼쪽) 및 내부 (오른쪽) Vim의 스크린 샷입니다.

여기에 이미지 설명을 입력하십시오

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 색 모드로 실행하는 것과 관련하여 비슷한 질문이 많이 있지만 (내가 찾은 가장 좋은 대답은 here ) 위의 정보가 있다고해서 그것이 내 문제라고 생각하지 않습니다.

터미널 유형이 다음과 같이 Vim을 실행하면 tmux 외부에서 문제를 복제 할 수 있습니다 screen-256color.

$ TERM=screen-256color vim

따라서 색상 차이를 유발하는 터미널 기능 xterm-256colorscreen-256color터미널 기능 사이에 약간의 차이가 있다고 생각 합니다. 제목에서 제기 된 질문은 다음과 같습니다. 터미널 기능에서 Vim 색상이 다른 이유는 무엇입니까? 나는 :set termcaptmux의 내부와 외부의 차이점을 보았지만 실제로 어떤 변수가 행동의 차이를 일으키는 지 궁금합니다.

이전 질문 과 상관없이 tmux 내부 또는 외부에서 Vim 색상을 일관성있게 유지할 수 있습니까? 내가 시도한 것은 다음과 같습니다.

  • tmux가 사용하는 기본 터미널 ~/.tmux.conf을 다양한 값 으로 명시 적으로 설정 (일부 tmux FAQ 의 조언과 반대 ) :
    -g 기본 터미널 "screen-256color"설정
    -g 기본 터미널 "xterm-256color"설정
    -g 기본 터미널 "screen.xterm-256color"설정
    -g 기본 터미널 "tmux-256color"설정
  • 를 사용하여 tmux를 시작합니다 tmux -2.

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



답변

tmux“기본 색상”구성표를 사용할지 여부를 결정 하는 terminfo 기능 bce( 백색 지우기)을 지원하지 않습니다 vim.

그 특징은 tmux몇 번 언급되었습니다-


답변

나는 전에 비슷한 문제가 있었다. Vim의 파란색 주석은 읽기 어려웠습니다. 에서 .tmux.conf나는이 설정 :

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

그리고 .vimrc:

set background=dark

이제 다음과 같이 보이고 그놈 터미널과 Cygwin에서 모두 작동합니다.


답변

에서 Vim이 출력 한 색상에 대한 @egmont의 분석 덕분에 TERM=screen-256colorVim이 두 가지 시나리오에서 사용하는 색상 구성표를보고 영감을 받았습니다.

Vim default 경우 모두 색 구성표를 사용한다고보고합니다 . defaultFedora 25 ( /usr/share/vim/vim80/colors/default.vim) 의 색 구성표 가 실제로 표시되는 색과 일치하지 않는 것 같아서 이상하다고 생각했습니다 TERM=xterm-256color. :colorscheme defaultwhen을 사용하여 색상 구성표를 명시 적으로 설정하면 TERM=xterm-256colorVim의 모양이 when로 변경됩니다 TERM=screen-256color. Vim을 처음 시작할 때의 색상으로 되돌리려면 ron색상 구성표 를 사용해야했습니다 . 진행!

Vim에서 색상 구성표를 사용한다고보고 할 때 Ask Ubuntu 답변 을 찾았습니다. default반드시 default.vim테마별 색상 구성표를 의미하는 것은 아닙니다 . 대답에서 알 수 있듯이 어두운 테마 (사용중인) ron는 위에서 발견 한 것처럼 색 구성표에 해당합니다 . (이 게시물은 우분투와 관련이 있지만 OP가 그놈을 사용하고 있다고 가정합니다.)

또한 내가 가지고있는 것과 동일한 문제를 설명하는 것으로 보이는 또 다른 질문 을 발견했습니다 . 이 질문을 게시하기 전에 검색하는 동안 문제가 발생했지만 어떤 이유로 색상 구성표가 관련성이 있다고 생각하지 않았습니다.

나는 @LapshinDmitry가 그의 대답에서 한 일을하고 colorscheme ron~/.vimrc파일에 명시 적으로 설정 했습니다 . 이제 TMux 내부 또는 외부에서 Vim을 시작하든 색상이 동일하게 나타납니다. 유일한 단점은 바탕 화면 테마를 어두운 풍미에서 밝은 풍미로 변경하면 Vim이 “기본”밝은 테마 색 구성표로 자동 전환되지 않는 것 peachpuff입니다. 테마를 바꿀 가능성이 거의 없기 때문에 그와 함께 살 수 있습니다.

~/.vimrc해결책이 아닌 해결 방법 에서 색상 구성표를 명시 적으로 설정하는 것을 고려하기 때문에이 대답을 수락하지 않습니다 . Vim이의 값에 따라 다른 “기본”색 구성표를로드하는 이유를 누군가가 설명 할 수 있다면 TERM근본 원인을 이해하는 데 더 관심이 있기 때문에 그 대답을 기꺼이 받아 들일 것입니다. Vim이 두 terminfo 파일 사이의 터미널 기능을 해석하는 방법과 관련이 있다고 생각합니다.


답변

내 TERM 변수는 외부 TMux입니다 : xterm-256color 내부 TMux : screen-256color

맞고 나를 위해 일하고 있습니다. 다른 터미널 (urxvt를 사용)로 시도하여 그놈 터미널이 문제인지 확인하십시오. 의


또한 COLORTERM(광산이로 설정 됨 rxvt) 및 을 확인하십시오 unset TERMCAP.


답변

의심 할 여지없이 구글이 내 다음 컴퓨터를 설정했을 때 내 자신의 참조를 위해.

  • Vim8 / 네오 빔
  • 윈도우 10
  • 힘내 배쉬
  • 툭스 2.7

필요한 바이너리와 DLL을 Git bash의 PATH로 가져 오려면 다음 지시 사항을 사용하십시오.

https://blog.pjsen.eu/?p=440

다음 명령을 사용하여 구성하십시오.

echo 'set -g default-terminal "screen.xterm-256color"' > ~/.tmux.conf
tmux -2u