Я использую Emacs, работающий в urxvt, и не могу заставить курсив работать в Emacs, хотя терминал его поддерживает.
Вот мои текущие настройки:
- Я не установил
$TERM
, так что это по умолчаниюrxvt-unicode-256color
. - Мой
~/.Xdefaults
определяетURxvt.font: xft:Inconsolata:size=15
как терминальный шрифт. - Запуск
echo '\e[3mitalics\e[m'
в оболочке в самом деле урожайностьitalics
, так курсив в терминале сделайте работу, в основном.
При настройке лица «Курсив», это не делает никакой разницы выбрать ли я italic
, oblique
, normal
или в roman
качестве значения для Slant
атрибута, и делает это , если я не установить Slant
атрибут на всех. Я также попробовал это в сочетании с явным определением URxvt.italicFont
в моем ~/.Xdefaults
, но безрезультатно.
Жирный отлично работает, курсив вообще не работает. Есть идеи?
Ответы:
Вкратце: вы не можете использовать текущую версию Emacs (проверено с помощью 23.2), но смотрите ниже возможный обходной путь.
Более длинная история: поддержка курсива кодируется в базе данных terminfo как возможности
sitm
(ввести курсив) иritm
(выйти курсивом) (также называемыеZH
иZR
для совместимости с termcap); Вы можете проверить, что ваш терминал поддерживает их через:Если их нет, то
rxvt-unicode-256color
описание вашего терминала не предоставляет информацию библиотеке ncurses о курсивных возможностях терминала, и вы можете добавить их, иначе приложение TTY не сможет использовать курсив.Однако функция
turn_on_face
(в источниках Emacs, файлsrc/term.c
в строке 1919-2012), которая управляет отображением терминала, не обеспечивает поддержку курсива: она проверяет атрибуты лица, выделенные жирным шрифтом / тусклым светом / мерцанием / подчеркиванием. На самом деле, нет атрибута «курсив», закодированный вstruct face
.Действительно, мой Emacs (версия 23.1 на Ubuntu 11.04 natty) показывает выделенные курсивом грани (которые правильно отображаются в X11), как подчеркнуто в TTY. (Это означает, что, если вы не заботитесь о подчеркивании, вы можете просто изменить описание terminfo вашего терминала, чтобы использовать escape-последовательности курсора ввода / выхода вместо подчеркивания ввода / выхода и получать курсив.)
источник
ESC
не вставляет escape-символ. Вы можете нажать,Ctrl+V ESC
чтобы вставить один, но вам редко нужно. Например, escape-символ представлен\E
в источнике terminfo; в терминале (с bash / ksh / zsh) попробуйтеecho $'\e[3mhello\e[0m'
.Я добавляю этот ответ, потому что другие устарели. Emacs 24.5 правильно отображает курсивные лица в терминалах.
Это emacs 24.5, работающий в терминале (
emacs -nw
). Терминал естьuxvrt
и настройка у меня.Xdefaults
такая:источник
Что касается emacs, который не может использовать курсив в эмуляторах терминала, которые обеспечивают эту функциональность: это ошибка emacs # 9652, которая была исправлена Чонг Ийдонг 10 июня 2012 года.
Исправление не в любой выпущенной версии emacs, но, например, в пакете emacs-snapshot от emacs.naquadah.org .
источник