Tmux'ta vim arkaplanı için 256 renk desteği


98

tmux içinde vim kullanırken 256 renk desteğinin etkin olduğunu görebiliyorum. $ tput renklerle

Bununla birlikte, tmux'tayken vim'deki renk şemasını değiştirmek, renk şemasını satır başına değiştirecek ancak arka planı değiştirmeyecektir. ekran görüntüsüne bakıngörüntü tanımını buraya girin

İşte benim örneğin .vimrc dosyasının bir parçası. Orijinal renklerim güneş ışığında karanlık ve sonra çalıştırdıktan sonra: renklerimk molokai ne olacağını görüyorsunuz.

bilgi

  • gnome-terminal
  • darbe

benim ~ / .tmux.conf

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

benim ~ / .vimrc içinde

    set t_Co=256

benim ~ / .bashrc içinde

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

benim ~ / .profile içinde

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

Vim'de nasıl tam bir renk şeması değişikliği alabileceğime dair bir fikrim var mı? Dosyalardaki tüm snippet'lerim iyi görünüyor mu?


Control-l'ye normal modda basarsanız ya da ": redraw" komutunu uygularsanız ne olur?
Heptit

@Heptite hiçbir şey olmuyor hala renk değişimi ekran görüntüsündeki gibi satır başına.
winchendonsprings

Yanıtlar:


75

.Bashrc ve .profile görünümünüzden, tmux içindeki kabukları, tmux conf'nizdeki 'default-terminal' ayarını geçersiz kılar. Bunun gibi bir şey:

  • tmux ile yeni bir kabuk yarattı TERM=screen-256color
  • .bashrc / .profile run, ayarla TERM=xterm-256color
  • vim çalışır, tmux için yanlış TERM kullanmaya çalışır

Bunu çalıştırarak kontrol edebilirsiniz

echo $TERM

taze bir tmux kabuğunda.

Tmux bir terminalin doğru bir şekilde ayarlanması konusunda oldukça seçicidir. Yapabiliyorsanız, terim değerini .bashrc'nizde değil, gnome-terminalinin yapılandırmasında ayarlayın. Bunu yapmazsanız, bu ayarları "ekran" veya "ekran-256 renk" TERM kontrolü ile çevreleyin ve bu durumda bunları sıfırlamayın.

Tmux, terminalin GERÇEKTEN screenveyascreen-256color


5
Peki sen tamir ettin. Ben sadece .bashrc ve .profile dosyalarımda rengin 256 olarak ayarlanmasıyla ilgili herhangi bir şeyi yorumladım. Yeniden başlatılan tmux ve vim uygun arka plan ve 256 renk etkinleştirilmiş olarak çalışıyor. Bana gnome-terminal config dosyasının nerede olduğunu söyleyebilir misiniz? Ayrıca tmux'un terminalin 'scfeen-256color' olarak ayarlanmasını istediğini söylerken, tmux.conf'umda olduğu gibi mi demek istiyorsun? Thanks
winchendonsprings

Kontrol etmek için üzerinde gnome-terminali olan bir makinem yok, ancak ayar GUI'de bir yerde olmalı, muhtemelen 'profil ayarları' altında ya da onun gibi bir şey olmalı.
saat

5
Ayrıca, evet, tmux'un ortaya çıkardığı kabuklara kendi işini yapmasına izin ver. set -g default-terminal "screen-256color"Çizgiyi tmux conf'inizde bırakın .
15’te bloy

2
Yukarıdakilerin tümü benim peşimde olduğum şeydi (TERM'nin tmux'da doğru ayarlandığından ve geçersiz kılınmadığından emin olarak) ve ardından tmux'u yüklemek için 'tmux -2' kullanmak zorunda kaldım.
hayalet balina

Dene if [[ $TERM == xterm ]]; then TERM=xterm-256color; fi, benim için çalıştı.
asimetrik,

59

Burada açıklandığı gibi , terminal seçeneğini temizleyerek Arkaplan Rengi Silme'yi (BCE) devre dışı bırakın (Vim'de t_utçalıştırın :set t_ut=ve terminalin ekranını yenilemek için Control+ tuşuna basın L), böylece renk şemaları Vim tmux ve GNU ekranı içinde kullanıldığında düzgün çalışacaktır.


7
Bu benim için nihayet çalıştı tek şey!
Oz123,

3
set t_ut=Komutu manuel olarak kullanma ihtiyacını ortadan kaldıran vimrc'ime eklemeye başladım ve oturum BCE devre dışı bırakıldığından beri <kbd> Control </kbd> + <kbd> L </kbd> kullanmaya gerek kalmadı.
erran

PuTTY kullanırken bu çok önemlidir. Renk düzeni bir arka plana sahip olduğunda, tüm TERM kombinasyonları kısalır. İplik için harika bir ek.
botimer

Bu işe yarar, ancak bu çözüm uygulandığında, fareyle kopyalama ve yapıştırma işlemleri ayrıca boşluk izlerini kopyalar ve yapıştırır (vurgulanmışlarsa).
at kılı

17

Ben daha iyi bir yol buldum bu yazı . tmux -2Tmux'u kabuğun 256 renkli terminal kullandığını varsaymaya zorlayacak bir takma ad oluşturabilirsiniz .


4

Bu benim için #Ubuntu ve #Mac'ta işe yarayan şeydi:

# 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

Ayarları yeniden yükle:

$ kaynak ~ / .bashrc # Ubuntu

$ kaynak ~ / .bash_profile # Mac

Mac için .bashrc dosyasını kurun (tmux tarafından kullanıldığı gibi)

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

~ / .Tmux.conf dosyasında "default-terminal" seçeneğini ayarlayın.

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

1

Hızlı bir düzeltme, aşağıdakileri terminalde çalıştırmaktır.

export TERM=xterm-color

Her ~/.bash_profilezaman başlangıçta ayarlanacak şekilde, kendi profilinize veya başka bir profile ekleyebilirsiniz .


Teşekkürler! .zshrcGörsel modu elde etmek için gerçekte görünür olması için eklemeye ihtiyacım olan buydu.
danmcardle

1

Gnome-terminal + tmux + vim için çok benzer bir problem yaşamaya başladım, ancak aynı zamanda spesifik tuş kombinasyon problemine de genişletildi:. Birkaç şeyi bir araya getirmek zorunda kaldım. her şeyden önce .tmux.conf dosyamı içine koymak zorunda kaldım:

# 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

Sonra .vimrc de:

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

Ve bu anahtarlar ve arka plan için iş yaptı.


1

Hala sorunla karşılaşıyorsanız: t_Co=8Vim'in $TERM, tmux'un içindeki seçeneği kullanmaya başladığını fark ettim screen-256color. Geçici çözümüm vimrc'deki bu kod parçası:

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

$TMUXDeğişkeni yalnızca bir tmux oturumunda içeride ise doldurulur. Bu durumda vim'in 256 renk kullanmasına izin veriyorum. Tmux'un gerçek renkleri desteklemediği için termguicolors de ayarlayamadım.


0

Sadece şimdi aynı sorunla karşı karşıya kaldı. Demiryolunun cevabına ve ~ / .profile dosyamın mevcut içeriğine dayanarak (aslında winchendonsprings ile aynı ) ' Sorunumu şu şekilde çözdüm:

~/.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

Mantık basittir: Eğer tmux oturumunda değilseniz, xterm kullanın (renkli veya değil). Aksi takdirde ekran için aynı şey.

Belki de çok ayrıntılı, ama fikrin var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.