我可以在 gnome-terminal 中获得斜体吗?

我可以在 gnome-terminal 中获得斜体吗?

经过大量搜索,我找不到让 gnome-terminal 显示斜体字体的方法。我正在运行版本 3.6.2。

具体来说,我希望 vim 以斜体显示注释;我添加了

highlight Comment cterm=italic

到我的 .vimrc 但是它不起作用。

有人知道这是否可以做到吗?

答案1

Gnome 终端支持斜体(至少在 3.8.4 版本中)。您可以通过执行 来测试终端对斜体的支持$ echo -e "\e[3mfoo\e[23m"。如果您看到 foo 以斜体打印,,则终端支持它。

然后您必须插入以下内容.vimrc

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

请注意,^[是一个字符,可以在 vim 插入模式下通过键入 来插入<ctrl>-v <esc>

之后,您必须告诉 vim 将注释设为斜体。:highlight Comment cterm=italic打开包含注释的文件后,您可以通过在 vim 中执行来快速测试它是否有效。注释应立即变为斜体。

我在 reddit 上找到了上述说明(终端 vim 和 tmux 中的斜体),但我不必遵循那里列出的所有步骤。我的答案是对我有用的精简版说明。

答案2

不。我读了之后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以了解如何发出控制序列。

相关内容