我正在使用在 urxvt 中运行的 Emacs,尽管终端支持斜体,但我无法在 Emacs 中使用斜体。
这是我当前的设置:
- 我没有设置过
$TERM
,所以都是默认的rxvt-unicode-256color
。 - 我的
~/.Xdefaults
定义URxvt.font: xft:Inconsolata:size=15
是终端字体。 echo "\e[3mitalics\e[m"
在 shell 中运行确实会产生italics
,所以终端中的斜体做工作,基本上。
italic
自定义“斜体”字体时,选择、oblique
、normal
、 或roman
作为属性值都没有任何区别,如果我根本Slant
不设置该属性也没有任何区别。我也尝试将其与my 中的Slant
显式定义结合起来,但无济于事。URxvt.italicFont
~/.Xdefaults
粗体效果很好,斜体根本不起作用。有任何想法吗?
答案1
简而言之:您不能使用当前版本的 Emacs(已通过 23.2 检查),但请参阅下面的可能的解决方法。
更长的故事:对斜体的支持编码在
术语信息数据库作为sitm
(输入斜体)和ritm
(退出斜体)功能(也称为ZH
和ZR
用于 termcap 兼容性);您可以通过以下方式检查您的终端是否支持它们:
infocmp $TERM | egrep '(sitm|ritm)'
如果这些不存在,则您的rxvt-unicode-256color
终端描述不会向 ncurses 库提供有关终端斜体功能的信息,您可能需要添加它们,否则没有 TTY 应用程序可以使用斜体。
然而,管理终端显示的函数turn_on_face
(在 Emacs 源代码中,文件
src/term.c
位于第 1919--2012 行)不提供对斜体的支持:它检查脸部的粗体/暗淡/闪烁/下划线属性。实际上,.txt 中没有编码“斜体”属性struct face
。
事实上,我的 Emacs(Ubuntu 11.04 natty 上的版本 23.1)显示斜体字面(在 X11 中正确显示)为下划线的在 TTY 中。 (这意味着,如果您不关心下划线,您只需更改终端的 terminfo 描述即可使用输入/退出斜体转义序列而不是输入/退出下划线并获得斜体。)
答案2
答案3
关于 emacs 无法在提供此功能的终端仿真器中使用斜体:这是emacs 错误 #9652由 Chong Yidong 于 2012 年 6 月 10 日修复。
不过,该修复不在任何已发布的 emacs 版本中,但例如在 emacs-snapshot 包中emacs.naquadah.org。