Memperbaiki penyorotan di tmux

18

Saya kehilangan sorotan (mode terbalik) pada konsol karena saya mulai menggunakan urxvt + tmux sebagai terminal utama. Sorotan diganti dengan font miring - yang terlihat keren pada awalnya - namun saya tidak dapat menemukan satu kata miring dalam ribuan non-miring ketika saya mencoba mencari sesuatu di a less.

Ini berfungsi dengan baik ketika tipe terminal diatur ke xterm*profil (dengan misalnya set -g default-terminal "xterm-color"dalam .tmux.conf ). Namun beberapa jalan pintas tidak berfungsi, aplikasi tidak bisa mendapatkan geometri terminal yang tepat, ... dalam hal ini.

andras.tim
sumber

Jawaban:

11

Saya telah menemukan info dan solusi tentang hal itu di halaman tmux:

Deskripsi terminfo layar tidak memiliki mode miring dan memiliki mode menonjol di tempatnya, tetapi menggunakan urutan pelarian yang sama dengan yang urxvtdigunakan untuk miring. Ini berarti aplikasi (seperti vim) yang mencari huruf miring tidak akan menemukannya dan dapat berubah menjadi terbalik pada tempatnya, sementara aplikasi (seperti kurang) yang meminta menonjol akan berakhir dengan huruf miring alih-alih mundur.

[Fix 1] Ganti entri terminfo dan dapatkan terbalik + miring

(per pengguna!)

Untuk membuat aplikasi menyadari bahwa tmuxdukungan miring dan menggunakan urutan escape tepat untuk menonjol, Anda harus membuat baru terminfo berkas dengan dimodifikasi sgr, smso, rmso, sitmdan ritmentri:

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it|screen with italics support,/' \
  -e 's/%?%p1%t;3%/%?%p1%t;7%/' \
  -e 's/smso=[^,]*,/smso=\\E[7m,/' \
  -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \
  -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo
$ tic /tmp/screen.terminfo

Dan katakan tmux untuk menggunakannya di ~ / .tmux.conf :

set -g default-terminal "screen-it"

Jika terminal Anda mendukung 256 warna, gunakan:

$ screen_terminfo="screen-256color"

bukannya "layar". Lihat entri FAQ tentang dukungan 256 warna untuk info lebih lanjut. Perhatikan juga bahwa tmux masih akan menampilkan video terbalik pada terminal yang tidak mendukung huruf miring.

Jika Anda urxvttidak dapat menampilkan italics sama sekali, pastikan Anda memiliki font yang mampu dicetak miring, misalnya, tambahkan ke ~ / .Xdefaults :

urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true

[Fix 2] Cukup ganti karakter kontrol miring dengan terbalik

Tambahkan override terminal ini ke ~ / .tmux.conf :

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@'
andras.tim
sumber
2
Perbaikan 1 tampaknya berhasil, tetapi ini tahun 2015, apakah ini benar-benar sulit?
user1338062
Sayangnya, saya tidak dapat menemukan solusi yang lebih baik untuk masalah ini + Saya telah berhenti mencari ketika saya menemukan ini di milis tmux ... :(
andras.tim
4
Nah, menurut tmux FAQ tmux 2.1 harus memperbaiki perilaku. Jadi saya kira ini hanya diperlukan sementara. Saya pribadi hanya melakukan apa yang OP katakan dan mengatur saya default-terminaluntuk xterm.
user1338062
Terkadang ini tidak begitu baik. Misalnya ketika Anda harus kompatibel dengan Putty Anda tidak dapat menggunakan xterm, hanya screeenvarian.
andras.tim
1
Fix 1 bekerja untuk saya, tetapi membuat solarisasi saya dircolorsmenghilang; Saya dapat memperbaikinya dengan menambahkan TERM screen-itke daftar terminal di ~/.dircolors.
Benjamin W.
4

Cara yang lebih cepat:

set -g terminal-overrides "screen.xterm-new"

Bekerja tanpa sihir lebih lanjut (dan masih mengindahkan peringatan dalam manual tmux tentang jenis terminal yang perlu "layar" atau turunannya).

Steven
sumber
1
Bekerja dengan baik untuk saya, misalnya watch -n10 -d COMMAND args..memungkinkan untuk mendeteksi perubahan sekarang (seperti kosong! Bagaimana Anda melakukan italic blank?). Saya pikir ini harus menjadi jawaban yang diterima. Catatan: Saat terminal sudah terbuka, gunakanTERM=screen.xterm-new; export TERM
Tino
2

Saya menjalankan urxvt di arch linux. Jawaban op tidak membantu saya. Ini membantu saya:

https://github.com/tmux/tmux/blob/2.1/FAQ#L355-L383


cari italicdan jalankan itu; kemudian, letakkan ini di tmux config

set -g default-terminal "tmux"

jangan gunakan "tmux-256color". (coba saja, kurasa, tapi itu tidak berhasil untukku.)


akhirnya, tambahkan ini ke rc Anda (.zshrc, .bashrc, dll):

export TERM="xterm-256color"
dylnmc
sumber