ตัวเอียงใน Emacs บนเทอร์มินัลข้อความ (rxvt-unicode)


15

ฉันใช้ Emacs ที่ทำงานใน urxvt และฉันไม่สามารถทำให้ตัวเอียงทำงานใน Emacs ได้แม้ว่าเทอร์มินัลจะรองรับ

นี่คือการตั้งค่าปัจจุบันของฉัน:

  • ฉันยังไม่ได้ตั้งดังนั้นจึงเป็นค่าเริ่มต้น$TERMrxvt-unicode-256color
  • ~/.XdefaultsกำหนดของฉันURxvt.font: xft:Inconsolata:size=15เป็นแบบอักษร terminal
  • เล่นecho '\e[3mitalics\e[m'ในเปลือกผลตอบแทนแน่นอนitalicsดังนั้นตัวเอียงในขั้วที่ต้องทำในการทำงานโดยทั่วไป

เมื่อการปรับแต่ง“เอียง” หน้าก็ไม่ได้สร้างความแตกต่างใด ๆ ไม่ว่าฉันจะเลือกitalic, oblique, normalหรือromanเป็นค่าสำหรับSlantแอตทริบิวต์หรือไม่ก็ถ้าผมไม่ได้ตั้งค่าSlantแอตทริบิวต์ที่ทั้งหมด ฉันยังลองใช้ร่วมกับการกำหนดอย่างชัดเจนURxvt.italicFontในของฉัน~/.Xdefaultsแต่ไม่มีประโยชน์

ตัวหนาทำงานได้ดีตัวเอียงไม่ทำงานเลย ความคิดใด ๆ


ฉันไม่ได้ตระหนักว่ามันเป็นไปได้ที่จะมีตัวเอียงจากระยะไกลในสถานี ขอบคุณสำหรับสิ่งนั้น
wfaulk

คำตอบ:


10

กล่าวโดยย่อ: คุณไม่สามารถใช้ Emacs เวอร์ชันปัจจุบัน (ทำเครื่องหมายด้วย 23.2) แต่ดูวิธีแก้ไขที่เป็นไปได้ด้านล่าง

เรื่องที่ยาวกว่า: การรองรับตัวเอียงถูกเข้ารหัสใน ฐานข้อมูลterminfoในฐานะsitm(ป้อนตัวเอียง) และritm(ออกตัวเอียง) ความสามารถ (เรียกอีกอย่างว่าZHและZRสำหรับความเข้ากันได้ของ termcap); คุณสามารถตรวจสอบว่าเทอร์มินัลของคุณรองรับพวกเขาผ่าน:

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

หากสิ่งเหล่านั้นไม่มีอยู่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 ของเทอร์มินัลของคุณเพื่อใช้ลำดับการยกเว้นตัวเอนการป้อน / ออกแทนการขีดเส้นใต้การป้อน / ออกและรับตัวเอียง)


คำตอบนี้ดูดี แต่ตอนนี้ฉันไม่สามารถทดสอบได้เพราะมีเพียงลินุกซ์ติดตั้งที่ฉันมีอยู่ในฐานะแขกในโฮสต์ win7 เป็นผลให้ฉันมีปัญหาในการทดสอบนี้ โดยเฉพาะฉันดูเหมือนจะไม่สามารถแทรกรหัสหลบหลีก หากคนอื่นสามารถทดสอบเพื่อยืนยันหรืออธิบายสิ่งที่ฉันอาจทำผิดกับลำดับการหลบหนีฉันยินดีที่จะมอบรางวัลให้
vschum

@vschum หากคุณพยายามเปลี่ยนฐานข้อมูล terminfo ของคุณคำตอบนี้น่าจะช่วยได้ เราไม่สามารถช่วยเหลือคุณได้หากคุณไม่อธิบาย คุณสามารถถามคำถามเกี่ยวกับพวกเขา
Gilles 'หยุดความชั่วร้าย'

@Gilles ที่จริงแล้วมันมีอะไรเพิ่มเติมกับคำตอบนี้ ฉันไม่สามารถหาวิธีแทรกลำดับเพื่อทดสอบว่าตัวเอียงทำงานหรือไม่ เมื่อฉันพิมพ์ ESC [3 m ไม่มีอะไรปรากฏขึ้นในหน้าจอเครื่อง
vschum

2
@vschum การกดESCไม่ได้ใส่ตัวอักษรยกเว้น คุณสามารถกดCtrl+V ESCเพื่อแทรกหนึ่งอัน แต่ไม่ค่อยจำเป็น เช่นตัวละครหนีมีการแสดงโดย\Eในแหล่ง terminfo; ในขั้ว (กับทุบตี / ksh / zsh) echo $'\e[3mhello\e[0m'ลอง
Gilles 'หยุดความชั่วร้าย'

4

ฉันกำลังเพิ่มคำตอบนี้เพราะคนอื่นล้าสมัย Emacs 24.5 แสดงใบหน้าตัวเอียงในเทอร์มินัลอย่างถูกต้อง

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือ emacs 24.5 ที่ทำงานในเทอร์มินัล ( emacs -nw) เทอร์มินัลคือuxvrtและการตั้งค่าในฉัน.Xdefaultsคือ:

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

3

เกี่ยวกับ emacs ที่ไม่สามารถใช้ตัวเอียงในเทอร์มินัลอีมูเลเตอร์ซึ่งให้ฟังก์ชั่นนี้: นี่คือemacs bug # 9652ซึ่งแก้ไขโดย Chong Yidong เมื่อวันที่ 10 มิ.ย. 2012

การแก้ไขไม่ได้อยู่ในรุ่นใด ๆ ที่วางจำหน่ายของ emacs ว่า แต่เช่นในแพคเกจ emacs-ภาพรวมจากemacs.naquadah.org


ข้อมูลนี้อาจล้าสมัย ....
Samuel Edwin Ward
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.