文本终端在Emacs中的斜体字(rxvt-unicode)


15

我使用的是在urxvt中运行的Emacs,尽管终端支持,但我无法使斜体字在Emacs中工作。

这是我当前的设置:

  • 我还没设置$TERM,所以是默认的rxvt-unicode-256color
  • 我的~/.Xdefaults定义URxvt.font: xft:Inconsolata:size=15为终端字体。
  • echo '\e[3mitalics\e[m'在shell中运行确实会产生收益italics,因此终端中的斜体基本上可以工作。

在定制“斜体”的脸,它没有任何区别是否我选择italicobliquenormal,或roman作为值Slant属性,也不会,如果我不设置Slant在所有的属性。我还结合了URxvt.italicFont在我的中显式定义来尝试此操作~/.Xdefaults,但无济于事。

粗体效果很好,斜体根本不起作用。有任何想法吗?


我什至没有意识到在终端中甚至有可能使用斜体。感谢那。
wfaulk 2011年

Answers:


10

简而言之:您不能使用当前版本的Emacs(已通过23.2进行检查),但是请参见下面的可能的解决方法。

更长的故事:对斜体的支持在terminfo数据库中编码 为sitm(输入斜体)和ritm(退出斜体)功能(也称为ZHZR术语库兼容性);您可以通过以下方式检查您的终端是否支持它们:

infocmp $TERM | egrep '(sitm|ritm)'

如果不存在,则您的rxvt-unicode-256color终端描述不会向ncurses库提供有关终端的斜体功能的信息,您可能需要添加它们,否则,任何TTY应用程序都不能使用斜体。

但是,用于管理终端显示的功能turn_on_face(在Emacs源代码中,src/term.c位于1919--2012行的文件 中)不支持斜体:它检查人脸的粗体/暗淡/闪烁/下划线属性。实际上,没有使用编码的“斜体​​”属性struct face

确实,我的Emacs(在Ubuntu 11.04 natty上为23.1版)在TTY中带下划线的字体显示为斜体(在X11中正确显示)。(这意味着,如果您不关心下划线,则只需更改终端机的terminfo描述,以使用输入/退出斜体转义序列代替输入/退出下划线并获取斜体。)


这个答案看起来不错,但现在我无法对其进行测试,因为我仅有的Linux安装是作为Win7主机中的客户机进行的。结果,我很难对此进行测试。具体来说,我似乎无法插入ascii转义代码。如果其他人可以测试以确认或解释我的转义序列可能做错了什么,那么我将很乐意奖励。
vschum 2011年

@vschum如果您尝试更改terminfo数据库,此答案应该会有所帮助。除非您解释,否则我们无济于事。你可以问一个关于他们的问题
吉尔(Gilles)'所以

@Gilles实际上,这与答案有更多关系。我不知道如何插入序列以测试斜体是否有效。当我键入ESC [3 m时,终端中什么也没有显示。
vschum 2011年

2
@vschum按下ESC不会插入转义字符。您可以按Ctrl+V ESC插入一个,但是您很少需要插入。例如,转义字符\E在terminfo源中表示为;在终端(使用bash / ksh / zsh)中,尝试echo $'\e[3mhello\e[0m'
吉尔(Gilles)“所以,别再邪恶了”,

4

我要添加此答案,因为其他答案已过时。Emacs 24.5可以在终端中正确显示斜体。

在此处输入图片说明

这是在终端(emacs -nw)中运行的emacs 24.5 。终端是uxvrt,我的设置.Xdefaults是:

URxvt*termName: rxvt-unicode-256color
URxvt.font: xft:DejaVu Sans Mono:size=9

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.