Исправлена ​​подсветка в tmux

6295
andras.tim

Мне не хватает подсветки (обратного режима) на консоли, так как я начал использовать urxvt + tmux в качестве основного терминала. Основные моменты были заменены курсивом - сначала это выглядит довольно круто - однако я не могу найти одно курсивное слово в тысячах не курсивом, когда пытаюсь найти что-то в a less.

Это работает правильно, пока тип терминала установлен на xterm*профиль (например, set -g default-terminal "xterm-color"в .tmux.conf ). Однако некоторые ярлыки не могут работать, приложения не могут получить правильную геометрию терминала, ... в этом случае.

18

3 ответа на вопрос

10
andras.tim

I have found info and solutions about it on tmux's pages:

Screen's terminfo description lacks italics mode and has standout mode in its place, but using the same escape sequence that urxvt uses for italics. This means applications (like vim) looking for italics will not find it and might turn to reverse in its place, while applications (like less) asking for standout will end up with italics instead of reverse.

[Fix 1] Replace terminfo entries and get reverse + italics

(per user!)

To make applications aware that tmux supports italics and to use a proper escape sequence for standout, you'll need to create a new terminfo file with modified sgr, smso, rmso, sitm and ritm entries:

$ 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 

And tell tmux to use it in ~/.tmux.conf:

set -g default-terminal "screen-it" 

If your terminal supports 256 colors, use:

$ screen_terminfo="screen-256color" 

instead of "screen". See the FAQ entry about 256 colors support for more info. Also note that tmux will still display reverse video on terminals that do not support italics.

If your urxvt cannot display italics at all, make sure you have an italics capable font enabled, for example, add to ~/.Xdefaults:

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

[Fix 2] Simply replace italic control characters with reverse

Add this terminal override to ~/.tmux.conf:

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@' 
Fix 1, кажется, работает, но сейчас 2015 год, неужели это так сложно? user1338062 8 лет назад 2
К сожалению, я не могу найти лучшего решения для этой проблемы + Я прекратил поиск, когда нашел это в списке рассылки tmux ... :( andras.tim 8 лет назад 0
Что ж, согласно [FAQ по tmux] (https://github.com/ThomasAdam/tmux/blob/master/FAQ#L355) tmux 2.1 должен исправить это поведение. Так что, думаю, это нужно только временно. Лично я просто сделал то, что сказал ОП, и установил для моего `default-Terminal` значение` xterm`. user1338062 8 лет назад 4
Иногда это не очень хорошо. Например, когда вам нужно совместить с PuTTY, вы не можете использовать `xterm`, только варианты` screeen`. andras.tim 8 лет назад 0
@ user1338062 Да, это действительно грустно, особенно учитывая, что `tmux` может просто предоставить собственную запись terminfo, как это делал` screen` целую вечность. Feuermurmel 8 лет назад 0
Исправление 1 сработало для меня, но заставило мои соляризованные «диколоры» исчезнуть; Мне удалось это исправить, добавив `TERM screen-it` в список терминалов в` ~ / .dircolors`. Benjamin W. 8 лет назад 1
4
Steven

Более быстрый способ:

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

Работает без какого-либо дополнительного волшебства (и все еще учитывает предупреждение в руководстве tmux о типе терминала, который должен быть "экраном" или его производным).

У меня отлично работает, например `watch -n10 -d COMMAND args..` позволяет обнаруживать изменения сейчас (например, пробелы! Как вы делаете пробелы курсивом?). Я думаю, что это должен быть принятый ответ. Примечание: если терминал уже открыт, используйте `TERM = screen.xterm-new; экспортный срок Tino 7 лет назад 1
1
dylnmc

Я запускаю urxvt в Arch Linux. Ответ оп не помог мне. Это помогло мне:

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


найдите italicи запустите это; затем поместите это в конфиг tmux

set -g default-terminal "tmux" 

не используйте "tmux-256color". (попробуйте, я полагаю, но у меня это не сработало.)


наконец, добавьте это в свой rc (.zshrc, .bashrc и т. д.):

export TERM="xterm-256color"