18

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

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

3 ответа3

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@'
4

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

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

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

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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .