Saya membutuhkan $TERM
. saya menjadi xterm-256color
di luar tmux (dalam terminal "polos" dengan zsh), tetapi screen-256color
di dalam tmux.
Pertama saya mencoba:
- tambahkan
export TERM='xterm-256color'
ke~/.zshrc
saya . - tambahkan
set -g default-terminal "screen-256color"
ke~/.tmux.conf
saya
Sekarang, ketika saya membuka terminal (katakanlah, xterm), TERM
adalah xterm-256color
, yang mana yang benar. Tetapi ketika saya menjalankan tmux, TERM
lagi xterm-256color
!
Kemudian saya mencoba mengomentari baris di ~/.zshrc
. saya . Sekarang, ketika saya membuka terminal, TERM
adalah xterm
, dan ketika saya menjalankan tmux, TERM
adalah screen-256color
. Jadi sepertinya jika saya mengatur TERM
di .zshrc
, tmux pertama-tama menetapkan TERM
ke screen-256color
, menjalankan shell (yaitu zsh), dan zsh membaca .zshrc
dan menyetel ulang TERM
ke xterm-256color
.
Nah, bagaimana cara membuat TERM
menjadi xterm-256color
di terminal "polos", dan screen-256color
di tmux?
Jawaban yang Diterima:
Variabel lingkungan TERM harus disetel oleh aplikasi yang bertindak sebagai terminal Anda. Inilah intinya:membiarkan program yang berjalan di dalamnya mengetahui terminal apa yang sedang digunakan dan fitur apa saja yang didukungnya.
Zsh bukan terminal. Ini adalah cangkang. Mungkin peduli apa TERM Anda diatur jika ingin melakukan hal-hal khusus, tetapi tidak harus bertanggung jawab untuk pengaturan dia. Sebaliknya ia bertanggung jawab untuk mengatur variabel seperti ZSH_VERSION yang dapat digunakan oleh skrip atau proses anak lainnya untuk memahami perilaku apa yang diharapkan dari shell induknya.
Sebagai gantinya, Anda perlu memeriksa konfigurasi untuk aplikasi terminal apa pun yang Anda gunakan dan memintanya untuk melaporkan dirinya sendiri dengan benar. Misalnya Anda dapat melakukan ini untuk xterm dengan menambahkan baris ini ke ~/.Xdefaults
file yang digunakannya untuk nilai konfigurasi:
xterm*termName: xterm-256color
Tampaknya gnome-terminal melakukan hal bodoh dengan membaca seperti apa konfigurasi xterm Anda alih-alih memilikinya sendiri. Ini mungkin membantu Anda dalam beberapa kasus tetapi seharusnya lebih tepat diatur ke gnome-256color. Ini tampaknya merupakan keluhan lama terhadapnya (dan beberapa emulator terminal berbasis VTE lainnya). Cara umum untuk mengatasi ini adalah dengan mengeksploitasi nilai lain yang ditetapkan:
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=gnome-256color
fi
Tapi ini membawa Anda kembali ke masalah Anda dengan tmux, jadi Anda harus memperhitungkannya dengan tidak mengatur ulang TERM jika sudah menjadi sesuatu seperti "screen-256color" atau "screen":
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=gnome-256color
fi
Untuk terminal lain, Anda perlu mencari rutinitas konfigurasi yang tepat.
Terkait:Bagaimana cara Safari mengatur kMDItemWhereFroms saat menggunakan "Simpan Gambar ke Unduhan"?