Я нашел информацию и решения по этому поводу на страницах 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@'