Risolto il problema con l'evidenziazione in tmux


18

Mi manca evidenziare (modalità inversa) sulla console da quando ho iniziato a utilizzare urxvt + tmux come terminale principale. I momenti salienti sono stati sostituiti con caratteri in corsivo , cosa che sembra piuttosto interessante all'inizio, tuttavia non riesco a trovare l'unica parola in corsivo in migliaia non corsivo quando provo a cercare qualcosa in a less.

Funziona correttamente mentre il tipo di terminale è impostato su un xterm*profilo (ad es. set -g default-terminal "xterm-color"In .tmux.conf ). Tuttavia, alcune scorciatoie non possono funzionare, le app non possono ottenere la corretta geometria del terminale, ... in questo caso.

Risposte:


11

Ho trovato informazioni e soluzioni a riguardo sulle pagine di tmux:

La descrizione del terminfo dello schermo è priva della modalità corsivo e ha la modalità standout al suo posto, ma usando la stessa sequenza di escape che urxvtusa per il corsivo. Ciò significa che le applicazioni (come vim) in cerca di corsivo non lo troveranno e potrebbero girare al contrario al loro posto, mentre le applicazioni (come meno) che richiedono lo standout finiranno con il corsivo invece del contrario.

[Correzione 1] Sostituisci le voci terminfo e ottieni reverse + corsivo

(per utente!)

Per rendere le applicazioni consapevoli che tmuxsupporta il corsivo e di utilizzare una sequenza di escape corretta per standout, è necessario creare un nuovo terminfo file con modificati sgr, smso, rmso, sitme ritmle voci:

$ 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

E dì a tmux di usarlo in ~ / .tmux.conf :

set -g default-terminal "screen-it"

Se il tuo terminale supporta 256 colori, usa:

$ screen_terminfo="screen-256color"

invece di "schermo". Vedi la voce FAQ sul supporto a 256 colori per maggiori informazioni. Si noti inoltre che tmux visualizzerà comunque video inverso su terminali che non supportano il corsivo.

Se urxvtnon riesci affatto a visualizzare il corsivo, assicurati di avere un carattere in corsivo abilitato, ad esempio aggiungi a ~ / .Xdefaults :

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

[Correzione 2] Sostituisci semplicemente i caratteri di controllo in corsivo con il contrario

Aggiungi questo override terminale a ~ / .tmux.conf :

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@'

2
La correzione 1 sembra funzionare, ma è il 2015, può davvero essere così difficile?
user1338062,

Sfortunatamente, non riesco a trovare una soluzione migliore per questo problema + Ho smesso di cercare quando l'ho trovato su una mailing list tmux ... :(
andras.tim

4
Bene, secondo le FAQ di tmux tmux 2.1 dovrebbe risolvere il comportamento. Quindi immagino che questo sia necessario solo temporaneamente. Io personalmente appena fatto quello che ha detto il PO e impostare il mio default-terminala xterm.
user1338062,

A volte questo non è così buono. Ad esempio, quando devi compatibile con PuTTY non puoi usare xterm, solo screeenvarianti.
andras.tim,

1
Fix 1 ha funzionato per me, ma ha fatto dircolorsscomparire il mio solarizzato ; Sono stato in grado di risolverlo aggiungendo TERM screen-italla lista dei terminali in ~/.dircolors.
Benjamin W.

4

Modo più veloce:

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

Funziona senza ulteriore magia (e osserva ancora l'avvertimento nel manuale di tmux sul tipo di terminale che deve essere "schermo" o un suo derivato).


1
Funziona perfettamente con me, ad esempio ora watch -n10 -d COMMAND args..consente di rilevare le modifiche (come gli spazi vuoti! Come si fa lo spazio in bianco corsivo?). Penso che questa dovrebbe essere la risposta accettata. Nota: quando il terminale è già aperto, utilizzareTERM=screen.xterm-new; export TERM
Tino

2

Corro urxvt in arch linux. La risposta dell'operazione non mi ha aiutato. Questo mi ha aiutato:

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


cercare italiced eseguirlo; quindi, inseriscilo in tmux config

set -g default-terminal "tmux"

non usare "tmux-256color". (provalo, suppongo, ma non ha funzionato per me.)


infine, aggiungi questo al tuo rc (.zshrc, .bashrc, ecc.):

export TERM="xterm-256color"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.