zsh: tmux'da TERM = ekran-256renk, tmux olmadan xterm-256renk


18

Benim ihtiyacım $TERMolduğu xterm-256colorancak ( "düz" zsh ile terminali olarak) tmux dışını screen-256coloriç tmux.

Önce denedim:

  • eklemek export TERM='xterm-256color'kardeşime karşı ~/.zshrc.
  • set -g default-terminal "screen-256color"benim ekle~/.tmux.conf

Ben terminali (diyelim, xterm) açtığınızda Şimdi, TERMise xterm-256color, doğru olan. Ama tmux'u çalıştırdığım zaman TERM, yine xterm-256color!

Sonra benim satırda yorum yapmaya çalıştı ~/.zshrc. Şimdi terminali açtığınızda, TERMolduğu xterm, ve ben tmux çalıştırdığınızda, TERMbir screen-256color. Ben ayarlarsanız Öyle görünüyor TERMiçinde .zshrctmux öncelikle setleri TERMiçin screen-256colorçalışır (zsh olan) kabuk, ve zsh okur .zshrcve sıfırlanır TERMiçin xterm-256color.

Peki, nasıl yapmak TERMolmayı xterm-256color"düz" terminalde ve screen-256colortmux içinde?


5
Xterm yapılandırmasında (X kaynakları) xterm için TERM'yi ve tmux yapılandırmasında tmux için TERM'yi ayarlayın. Bunlardan herhangi birini zsh ile yapmanız gerekmiyor.
Stéphane Chazelas

Hmm, ama aynı zamanda diğer terminal emülatörlerini de kullanıyorum: diyelim ki, gnome terminali ve deprem tarzı açılır konsol "altyo" github.com/linvinus/AltYo , hala TERMbu terminallerde doğru ayarlamanın yolunu bulamıyorum
Dmitry Frank

1
Eh bu uygulamalar ayarlamak için sorumludur onların düzgün TERM. Çünkü gnome-terminal, bu muhtemelen gnome-256color... Doğru yapılandırmanız gereken uygulamalardır, değil zsh. Kullanım nedenleri xtermmuhtemelen daha spesifik terminfo girişlerine sahip olmayan makinelere sshing yaparken problemleri önlemek. Sadece kapsamlı bir terminfo veritabanına sahip makinelere sshing yaptığınızı biliyorsanız, bunu uygulamaların kendisinde değiştirebilirsiniz.
Stéphane Chazelas

Ve .zshrc kludge eklemeniz gerekiyorsa, IMO, tamamlanmamış terminfo veritabanlarına sahip makinelerde olmalıdır (xterm-256color'u xtermxterm-256color s desteklenmiyorsa değiştirmek için, ancak bu girişleri kendi ~ / .terminfo veritabanı).
Stéphane Chazelas

Terminal öykünücüsünde terimi değil, girmeliyiz .zshrc. Doğru yol değil.
jdhao

Yanıtlar:


24

TERM ortam değişkeni terminaliniz olarak işlev gören uygulama tarafından ayarlanmalıdır. İşin asıl amacı budur: İçlerinde çalışan programların hangi terminalin kullanıldığını ve dolayısıyla ne tür özellikleri desteklediğini bilmesini sağlamak.

Zsh bir terminal değil. Bu bir kabuk. Özel işler yapmak istiyorsa TERM'nizin neye ayarlandığını önemsiyor olabilir, ancak bunu ayarlamaktan sorumlu olmamalıdır . Bunun yerine, üst kabuklarından hangi davranışın beklendiğini anlamak için komut dosyaları veya diğer alt işlemler tarafından kullanılabilecek ZSH_VERSION gibi değişkenleri ayarlamaktan sorumludur.

Bunun yerine, kullandığınız terminal uygulaması için yapılandırmayı kontrol etmeniz ve kendisini doğru şekilde raporlamasını istemeniz gerekir. Örneğin, bu satırı ~/.Xdefaultsyapılandırma değerleri için kullandığı dosyaya ekleyerek xterm için yapabilirsiniz :

xterm*termName: xterm-256color

Görünüşe göre gnome-terminali, xterm yapılandırmanızın kendi olması yerine ne olacağını okumak için aptalca bir şey yapıyor. Bu sizi bazı durumlarda zorlayabilir, ancak daha düzgün gnome-256color olarak ayarlanmalıdır. Bu, ona (ve diğer bazı VTE tabanlı terminal emülatörlerine) karşı uzun süredir devam eden bir kavrama gibi görünüyor. bir çözmenin yaygın bir yolu , ayarladığı başka bir değerden yararlanmaktır:

if [ "$COLORTERM" = "gnome-terminal" ]; then
    export TERM=gnome-256color
fi 

Ancak bu sizi tmux ile ilgili sorununuza geri götürür, bu nedenle zaten "screen-256color" veya "screen" gibi bir şeyse TERM'i sıfırlamamaktan sorumlu olmanız gerekir:

if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
    export TERM=gnome-256color
fi

Diğer terminaller için uygun yapılandırma rutinlerini aramanız gerekir.


zshayardan sorumlu değildir $SHELL. loginbunu ayarlamaktan sorumludur ve uygulamalara ( , ...) tercih ettiğiniz kabuk olarak istediğiniz kabuğu söylemek istiyorsanız bunu başka bir şeyle değiştirmek sizin sorumluluğunuzdadır . ayarlanmış ve birkaç belgelenmiş özel kabuk değişkeninden sorumludur , ancak dokunmaz . xtermvizsh$ZSH_VERSION$SHELL
Stéphane Chazelas

@ StéphaneChazelas Benim özensiz davrandım, düzeltme için teşekkürler.
Caleb

Bunun için teşekkürler, bana konsolebenim bashrc koymak yerine TERM nasıl ayarlandığını aradı. O profilin Genel sekmesinde, Çevre, ayarlanan Bulundu onu değiştirdi xtermiçinxterm-256color
Mike Lippert

benim vanilya deb10 altında for truecoloryerine GNOME Terminal raporları yüklemek ve böylece yukarıdaki algılama mekanizması çalışmayabilir dikkat edin. XTERM bu değeri hiç ayarlamış gibi görünmüyor, herhangi bir değerin kontrol edilmesi geçerli olabilir. bu terim türü, muhtemelen başka bir yerde bu özette tartışılmıştır : gist.github.com/XVilka/8346728#true-color-detectiongnome-terminal$COLORTERM
Shaun Wilson

8

.Zshrc'nizin içine koyun

[[ $TMUX = "" ]] && export TERM="xterm-256color"

Ve .tmux.conf dosyanızın içinde

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

2
Veya [[ $TMUX != "" ]] && export TERM="screen-256color" bu şekilde zsh, TERM'i yalnızca bir tmux oturumu içinde çağrılırsa ayarlayacaktır
Titou
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.