Korrektur der Hervorhebung in tmux

6356
andras.tim

Ich vermisse das Hervorheben (Reverse-Modus) auf der Konsole, seit ich urxvt + tmux als Hauptterminal verwendet habe. Die Highlights wurden durch kursive Schrift ersetzt - was auf den ersten Blick ziemlich cool aussieht - jedoch kann ich das kursive Wort in Tausend nicht kursiv nicht finden, wenn ich versuche, etwas in einer zu suchen less.

Dies funktioniert einwandfrei, wenn der Terminaltyp auf ein xterm*Profil eingestellt ist (z . B. set -g default-terminal "xterm-color"in .tmux.conf ). Einige Verknüpfungen können jedoch nicht funktionieren. Apps können keine korrekte Geometrie des Terminals erhalten. In diesem Fall.

18

3 Antworten auf die Frage

10
andras.tim

Ich habe auf tmux Seiten Informationen und Lösungen dazu gefunden:

In der terminfo-Beschreibung des Bildschirms fehlt der Kursivmodus und der Standout-Modus, jedoch die gleiche Escape-Sequenz, urxvtdie für Kursivschrift verwendet wird. Dies bedeutet, dass Anwendungen (wie vimzB), die nach Kursivschrift suchen, dies nicht finden werden und sich möglicherweise umgekehrt umkehren, während Anwendungen (wie weniger), die nach Standout fragen, mit Kursivschrift enden und nicht umgekehrt.

[Fix 1] Ersetzen Sie die Terminfo-Einträge und erhalten Sie die Umkehrung + Kursivschrift

(pro Benutzer!)

Um Anwendungen beachten Sie, dass tmuxkursiv und zu verwenden, um eine richtige Escape - Sequenz für herausragende unterstützt, müssen Sie eine neue erstellen term Datei mit modifizierten sgr, smso, rmso, sitmund ritmEinträge:

$ 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 

Und sag tmux, es in ~ / .tmux.conf zu verwenden :

set -g default-terminal "screen-it" 

Wenn Ihr Terminal 256 Farben unterstützt, verwenden Sie:

$ screen_terminfo="screen-256color" 

statt "screen". Weitere Informationen finden Sie im FAQ-Eintrag zur Unterstützung von 256 Farben. Beachten Sie auch, dass tmux auf Terminals, die nicht kursiv formatiert sind, weiterhin inverses Video anzeigt.

Wenn Sie urxvtkeine kursiven Zeichen anzeigen können, stellen Sie sicher, dass eine kursivierte Schrift aktiviert ist. Fügen Sie beispielsweise ~ / .Xdefaults hinzu :

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

[Fix 2] Ersetzen Sie einfach kursive Steuerzeichen durch Umkehren

Fügen Sie diese Terminalüberschreibung zu ~ / .tmux.conf hinzu :

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@' 
Fix 1 scheint zu funktionieren, aber es ist 2015, kann das wirklich so schwierig sein? user1338062 vor 9 Jahren 2
Leider kann ich keine bessere Lösung für dieses Problem finden + Ich habe aufgehört zu suchen, als ich dies auf einer tmux-Mailingliste fand ... :( andras.tim vor 9 Jahren 0
Nun, gemäß [tmux-FAQ] (https://github.com/ThomasAdam/tmux/blob/master/FAQ#L355) sollte tmux 2.1 das Verhalten beheben. Ich denke, das wird nur vorübergehend benötigt. Ich persönlich habe einfach das gemacht, was das OP gesagt hat, und mein `default-terminal` auf` xterm` gesetzt. user1338062 vor 9 Jahren 4
Manchmal ist das nicht so gut. Wenn Sie beispielsweise mit PuTTY kompatibel sein müssen, können Sie `xterm` nicht verwenden, nur` screeen`-Varianten. andras.tim vor 9 Jahren 0
@ user1338062 Ja, das ist wirklich traurig, vor allem wenn man bedenkt, dass "tmux" nur einen eigenen Terminfo-Eintrag bereitstellen kann, wie dies bei "screen" seit Ewigkeiten der Fall ist. Feuermurmel vor 8 Jahren 0
Fix 1 funktionierte für mich, ließ aber meine solarisierten "Dircolors" verschwinden. Ich konnte das Problem beheben, indem ich TERM screen-it zur Liste der Terminals in `~ / .dircolors` hinzufügte. Benjamin W. vor 8 Jahren 1
4
Steven

Schneller Weg:

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

Funktioniert ohne weitere Magie (und beachtet immer noch die Warnung im tmux-Handbuch, dass der Terminaltyp "Bildschirm" oder eine Ableitung davon sein muss).

Funktioniert perfekt für mich, zum Beispiel kann mit "watch -n10 -d COMMAND args.." jetzt Änderungen erkannt werden (wie Leerzeichen! Wie machen Sie kursive Leerzeichen?). Ich denke, das sollte die akzeptierte Antwort sein. Hinweis: Wenn das Terminal bereits geöffnet ist, verwenden Sie `TERM = screen.xterm-new; export TERM` Tino vor 8 Jahren 1
1
dylnmc

I run urxvt in arch linux. The op's answer did not help me. This helped me:

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


search for italic and run that; then, put this in tmux config

set -g default-terminal "tmux" 

don't use "tmux-256color". (try it, I suppose, but it didn't work for me.)


finally, add this to your rc (.zshrc, .bashrc, etc):

export TERM="xterm-256color"