GNU/Linux >> Belajar Linux >  >> Linux

Zsh:Tetapkan Term=screen-256color Di Tmux, Tapi Xterm-256color Tanpa Tmux?

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"?
Linux
  1. Di mana Default Variabel Lingkungan Istilah Ditetapkan?

  2. Vim Tidak Berjalan Di Dalam Tmux?

  3. Batalkan Penyelesaian, Tapi Hanya Penyelesaian, Di Zsh?

  1. Cara Mengatur Pengaturan Proxy di baris perintah atau Terminal Linux

  2. Sejarah Bash tanpa nomor baris

  3. Bagaimana cara mengubah judul terminal judul Terminator, ZSH di Debian?

  1. Emulator Terminal Apa yang Mendukung Mode Kontrol Tmux?

  2. Menggunakan Variabel Lingkungan Dalam File Tmux.conf?

  3. Atur warna tab tmux yang aktif