TMUX에서 Vim 배경에 대한 256 색 지원


98

tmux에서 vim을 사용하는 동안 256 색상 지원이 활성화되어 있음을 알 수 있습니다. $ tput 색상으로

그러나 tmux에서 vim에서 색상 구성표를 변경하면 전체 배경이 아니라 라인별로 색상 구성표가 변경됩니다. 스크린 샷 참조여기에 이미지 설명을 입력하십시오

다음은 내 .vimrc 파일의 스 니펫입니다. 내 원래의 색 구성표는 어둡게 태양을 켠 다음 : colorscheme molokai를 실행하면 어떤 일이 발생하는지 알 수 있습니다.

정보

  • 그놈 터미널
  • 세게 때리다

~ / .tmux.conf에서

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

내 ~ / .vimrc에서

    set t_Co=256

내 ~ / .bashrc에

# ryan
export TERM="xterm-256color"
# ryan
alias tmux="tmux -2"

내 ~ / .profile

# ryan 256 color support
if [ -e /usr/share/terminfo/x/xterm-256color ]; then
    export TERM='xterm-256color'
  else
    export TERM='xterm-color'
  fi

vim에서 색상을 완전히 바꾸는 방법에 대한 아이디어가 있습니까? 파일의 모든 스 니펫이 잘 보이나요?


일반 모드에서 control-l을 누르거나 ": redraw"명령을 실행하면 어떻게됩니까?
Heptite

@Heptite 아무 일도 일어나지 않습니다. 스크린 샷과 같이 줄마다 색상 변화가 있습니다
winchendonsprings

답변:


75

.bashrc 및 .profile의 모습에서 tmux 내부의 쉘이 tmux conf의 '기본 터미널'설정을 재정의합니다. 이 같은:

  • tmux는 TERM=screen-256color
  • .bashrc / .profile 실행, 설정 TERM=xterm-256color
  • vim이 실행되고 tmux에 잘못된 TERM을 사용하려고합니다.

당신은 이것을 실행하여 이것을 확인할 수 있습니다

echo $TERM

신선한 tmux 쉘에서.

Tmux는 터미널을 올바르게 설정하는 데 비교적 까다 롭습니다. 가능하면 .bashrc가 아닌 gnome-terminal의 구성에서 용어 값을 설정하십시오. 실패하면 "screen"또는 "screen-256color"TERM을 확인하여 해당 설정을 둘러싸고이 경우 재설정하지 마십시오.

Tmux REALLY는 터미널을 screen또는screen-256color


5
잘 고 쳤어요 .bashrc 및 .profile 파일에서 색상을 256으로 설정하는 것과 관련된 내용을 간단히 주석 처리했습니다. tmux 및 vim을 다시 시작하면 올바른 배경 및 256 색상을 사용할 수 있습니다. 그놈 터미널 구성 파일의 위치를 ​​알려줄 수 있습니까? 또한 tmux가 터미널을 'scfeen-256color로 설정하고 싶다고 말하면 내 tmux.conf에있는 것처럼 말합니까? 감사합니다
winchendonsprings

gnome-terminal이있는 컴퓨터는 확인하기 편리하지만 설정은 GUI의 어딘가에 있어야합니다 (아마도 '프로필 설정'또는 그와 비슷한 것).
bloy

5
또한, tmux가 자신이 생성 한 쉘에 대해 고유 한 작업을 수행하도록하십시오. set -g default-terminal "screen-256color"tmux conf에 줄을 남겨 두십시오 .
bloy

2
위의 모든 것은 내가 추구 한 것입니다 (TMUX에서 TERM이 올바르게 설정되고 재정의되지 않았는지 확인). 그런 다음 'tmux -2'를 사용하여 tmux를로드해야했습니다.
phantomwhale

시도해보십시오 if [[ $TERM == xterm ]]; then TERM=xterm-256color; fi.
비대칭

59

여기설명 된대로 tmux 및 GNU 화면에서 Vim을 사용할 때 색상 구성표가 올바르게 작동하도록 터미널 옵션 을 지우고 ( Bim 에서 실행 한 다음 + 를 눌러 터미널 표시를 새로 고침 ) BCE ( Background Color Erase )를 비활성화 하십시오 .t_ut:set t_ut=ControlL


7
이것이 마침내 나를 위해 일한 유일한 것!
Oz123

3
결국 set t_ut=vimrc에 추가 하여 명령을 수동으로 사용할 필요가 없으며 세션이 BCE를 비활성화 한 상태에서 시작하므로 <kbd> Control </ kbd> + <kbd> L </ kbd>을 사용할 필요가 없습니다.
erran jan

PuTTY를 사용할 때 필수적입니다. 색 구성표에 배경이 있으면 모든 TERM 조합이 부족합니다. 실에 큰 추가.
botimer

그러나이 솔루션을 적용하면 마우스로 복사 및 붙여 넣기를 수행 할 수 있습니다. 강조 표시되는 경우 줄 뒤의 공백도 복사하여 붙여 넣습니다.
말 머리

17

이 게시물 에서 더 나은 방법을 찾았 습니다 . tmux -2tmux가 쉘이 256 색 터미널을 사용한다고 가정 하도록 하는 tmux의 별명을 작성할 수 있습니다 .


4

이것이 #Ubuntu와 #Mac에서 저에게 효과적이었습니다.

# File: ~/.bashrc (Ubuntu), ~/.bash_profile (Mac)
# for VIM and TMUC
if [ "$TERM" = "xterm" ]; then
  export TERM=xterm-256color
fi
alias tmux='tmux -2'  # for 256color
alias tmux='tmux -u'  # to get rid of unicode rendering problem

새로 고침 설정 :

$ 소스 ~ / .bashrc # 우분투

$ 소스 ~ / .bash_profile # Mac

Mac 용 .bashrc 설정 (tmux에서 사용됨)

# File: ~/.bashrc (Mac)
source ~/.bash_profile

~ / .tmux.conf에서 "default-terminal"옵션을 설정하십시오.

# File: ~/.tmux.conf
set -g default-terminal "screen-256color"  # Mac and Ubuntu

1

빠른 수정은 터미널에서 다음을 실행하는 것입니다.

export TERM=xterm-color

~/.bash_profile시작시 항상 설정되도록 다른 프로필에 추가 할 수 있습니다 .


감사! 이것은 .zshrc시각적 모드를 실제로 보이기 위해 추가하기 위해 필요한 모든 것 입니다.
danmcardle

1

gnome-terminal + tmux + vim과 매우 비슷한 문제가 있었지만 특정 키 조합 문제로 확장되었습니다. 몇 가지를 함께 결합해야했습니다. 우선 .tmux.conf를 다음과 같이 설정해야했습니다.

# Ensure terminal starts with its own colour scheme (helps Vim/Neovim themes to not break)
set -g default-terminal "xterm-256color"
# set -g default-terminal "screen-256color" # no S-Fx keys ;-(
# and ensure the key-codes are xterm alike
set -g xterm-keys on

그런 다음 .vimrc에서 :

if $COLORTERM == 'gnome-terminal'
      set t_Co=256
endif
set t_ut=

그리고 그것은 열쇠와 배경을위한 일을했습니다.


1

여전히 문제가 발생하면 : vim t_Co=8이로 $TERM설정되어 있어도 tmux 내부의 옵션을 사용하는 것으로 돌아 왔습니다 screen-256color. 내 해결 방법은 vimrc 의이 스 니펫입니다.

if exists("$TMUX")
        set t_Co=256
        set notermguicolors
else
        set termguicolors
endif

$TMUX변수 만 TMUX 세션 내부의 경우 채워진다. 이 경우 vim에서 256 색을 사용할 수 있습니다. tmux는 트루 컬러를 지원하지 않으므로 termguicolors를 설정 해제했습니다.


0

지금 막 같은 문제에 직면했다. 를 기반으로 bloy '(의 대답은 내 ~ / .profile에의 현재 내용 실제로, 그것은과 동일합니다 winchendonsprings 다음과 같이 내 문제를 해결했습니다') :

~/.profile:

if [[ -z $TMUX ]]; then
    if [ -e /usr/share/terminfo/x/xterm+256color ]; then # may be xterm-256 depending on your distro
        export TERM='xterm-256color'
    else
        export TERM='xterm'
    fi
else
    if [ -e /usr/share/terminfo/s/screen-256color ]; then
        export TERM='screen-256color'
    else
        export TERM='screen'
    fi
fi

논리는 간단합니다. 우리가 tmux 세션에 없다면 xterm (컬러 ​​또는 비 컬러)을 사용하십시오. 그렇지 않으면 화면과 같은 것입니다.

어쩌면 너무 장황하지만 아이디어가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.