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

18

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

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

andras.tim
источник

Ответы:

10

Я нашел информацию и решения по этому поводу на страницах tmux:

В описании terminfo экрана отсутствует режим курсива, на его месте стоит режим ожидания, но используется та же escape-последовательность, что и urxvt использует для курсива. Это означает, что приложения (как vim ) поиск курсива не найдет его и может повернуть вспять на своем месте, в то время как приложения (например, меньше), запрашивающие выделение, в итоге получат курсив вместо обратного.

[Исправление 1] Замените записи terminfo и получите обратный + курсив

(за пользователя!)

Чтобы приложения знали, что tmux поддерживает курсив и использовать правильную escape-последовательность для выдающегося, вам нужно будет создать новый TERMINFO файл с измененным sgr, smso, rmso, sitm а также ritm записей:

$ 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

И скажи tmux использовать его в ~ / .Tmux.conf :

set -g default-terminal "screen-it"

Если ваш терминал поддерживает 256 цветов, используйте:

$ screen_terminfo="screen-256color"

вместо «экрана». Смотрите раздел FAQ о поддержке 256 цветов для получения дополнительной информации. Также обратите внимание, что tmux по-прежнему будет отображать обратное видео на терминалах, которые не поддерживают курсив.

Если твой urxvt курсив вообще не отображается, убедитесь, что у вас включен шрифт, поддерживающий курсив, например, добавьте в ~ / .Xdefaults :

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

[Исправление 2] Просто замените курсивные символы управления реверсом

Добавить этот терминал переопределить в ~ / .Tmux.conf :

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@'
andras.tim
источник
2
Fix 1, кажется, работает, но сейчас 2015 год, неужели это так сложно?
user1338062
К сожалению, я не могу найти лучшего решения для этой проблемы + Я прекратил поиск, когда нашел это в списке рассылки tmux ... :(
andras.tim
4
Ну, согласно tmux FAQ tmux 2.1 должен исправить поведение. Так что, думаю, это нужно только временно. Я лично сделал то, что сказал ОП, и установил default-terminal в xterm,
user1338062
Иногда это не очень хорошо. Например. когда вам нужно совместить с PuTTY, вы не можете использовать xterm, только screeen варианты.
andras.tim
1
Fix 1 работал для меня, но сделал мой соляризованным dircolors исчезают; Я смог это исправить, добавив TERM screen-it к списку терминалов в ~/.dircolors,
Benjamin W.
4

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

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

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

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

Я запускаю 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"
dylnmc
источник