经过大量搜索,我找不到让 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
以了解如何发出控制序列。