Могу ли я получить курсив в gnome-терминал?

13

После долгих поисков я не могу найти способ заставить gnome-терминал отображать курсивные шрифты. Я использую версию 3.6.2.

В частности, я хотел бы, чтобы vim отображал комментарии курсивом; я добавил

highlight Comment cterm=italic

на мой .vimrc, но это не работает.

Кто-нибудь знает, можно ли это сделать?

Chronos
источник
Этот вопрос помогает? Предлагается использовать escape-последовательность ANSI: \e[3m Терминал, который поддерживает escape-код ANSI?
Nattgew

Ответы:

14

Терминал Gnome поддерживает курсив (по крайней мере, в версии 3.8.4). Вы можете проверить поддержку терминала курсивом, выполнив $ echo -e "\e[3mfoo\e[23m". Если вы видите foo, напечатанное курсивом, foo , то терминал поддерживает это.

Затем вы должны вставить следующее в .vimrc:

set t_ZH=^[[3m
set t_ZR=^[[23m

Обратите внимание, что ^[это один символ, который можно вставить в режиме вставки vim, набрав <ctrl>-v <esc>.

После этого вы должны сказать vim, чтобы выделить комментарии курсивом. Вы можете быстро проверить, работает ли он, выполнив :highlight Comment cterm=italicvim, когда файл с некоторыми комментариями открыт. Комментарии должны быть выделены курсивом сразу.

Я нашел вышеприведенные инструкции для reddit ( курсив в терминале vim и tmux ), но мне не нужно было выполнять все шаги, перечисленные там. Мой ответ - дистиллированная версия инструкций, которые работали для меня.

Краньски Янез
источник
Спасибо! Команды set были тем, чего мне не хватало в моем vimrc. Теперь мои комментарии в терминале vim выделены курсивом так, как они мне нравятся.
Хронос
Не пропустите эту записку о ^ [или вы будете запутаны в течение длительного времени!
Джереми Вест
1
терминал GNOME 3.6.2 также поддерживает курсив! наконец, у меня есть курсив в уценке, спасибо!
Айрат
3

Нет. Я прочитал, man 5 terminfoчтобы узнать, какие последовательности ESCape терминала (что вы посылаете терминалу, чтобы вызвать поведение), имеющие отношение к курсиву, назывались:

man 5 terminfo | egrep 'italics|Cap-|Code'|head -n 10| tail -n 4
               Variable                   Cap-            TCap               Description  
                String                    name            Code  
       enter_italics_mode                 sitm            ZH             Enter italic mode  
       exit_italics_mode                  ritm            ZR             End italic mode  

Затем я использовал infocmpдамп каждого описания терминала, чтобы видеть, какие терминалы поддерживают курсив:

for i in $( find /usr/share/terminfo -type f ) ; do 
    j=${i##*/}; hdr="$( infocmp $j | head -n 1)";  
    infocmp $j | egrep -q 'sitm|ZH' 
    if [ $? = 0 ] ; then echo $hdr; fi; 
done
# Reconstructed via infocmp from file: /usr/share/terminfo/r/rxvt-unicode-256color
# Reconstructed via infocmp from file: /usr/share/terminfo/o/opus3n1+
# Reconstructed via infocmp from file: /usr/share/terminfo/i/iris-color

Итак, эти три терминальных типа (rxvt-unicode-256color, opus3n1 +, iris-color) поддерживают курсив. Другие нет.

Поскольку я не смог найти определение терминала для «gnome-terminal» (см. ls /usr/share/terminfo/g/, Я искал курсив во всех. Попробуйте infocmp $TERMпосмотреть, какие возможности поддерживает ваш терминал. Прочтите, man tputчтобы узнать, как генерировать управляющие последовательности.

waltinator
источник
Спасибо за ваш ответ и извинения за то, что не признали это раньше. Я перешел на использование Urxvt; он легко настраивается, и, приложив немного усилий, я смог заставить его выглядеть почти так же, как моя старая установка gnome-терминала.
Chronos