วิธีทำให้ xterm ส่งปุ่ม Alt ไปยัง emacs ในรูปแบบ Meta


9

ผมเห็นว่าคำถามนี้ได้รับการถามหลาย ครั้ง วิธีแก้ปัญหาที่ให้ไว้ในนั้นดูเหมือนจะไม่ใช้กับการตั้งค่าของฉัน นี่คือเรื่องราวของฉัน:

ฉันใช้ Ubuntu 12.0.04 LTS กับ xmonad (ไม่เกินคำพังเพย) และใช้ xterm สำหรับงานของฉัน ฉันต้องการใช้ xterm มากกว่าเทอร์มินัลหรือหน้าต่าง emacs อื่น เมื่อใช้ emacs -nw ฉันเห็นว่าไม่รู้จัก Alt ฉันตรวจสอบโดยใช้ xev ว่า Alt นั้นสร้างขึ้นจริง ๆ นอกจากนี้หากฉันใช้ rxvt ฉันเห็นว่า Alt กำลังได้รับการยอมรับจาก emacs -nw ฉันกำลังใช้โหมดชั่วร้าย (เป็นผู้ใช้กลุ่มที่ใช้เวลานานและเป็น newac emacs) และฉันไม่ต้องการให้คีย์การหลบหนีของฉันดีดตัวเป็น alt (ซึ่งเป็นวิธีแก้ปัญหาในเธรดอื่น) ฉันควรทำอย่างไรดี? (ถ้ามันช่วยได้, Alt-x บนหน้าต่าง xterm ที่ไม่มี emacs ที่เรียกใช้จะสร้าง "ø" หรือถ้าฉันใช้emacs -nw -Q)


หากฉันไม่เข้าใจผิดว่า Alt กำลังถูกอ่านเป็น M แทน
Braiam

ฉันไม่เข้าใจคุณหมายถึง M มากกว่า Meta ใช่มั้ย ทำไมคุณพูดแบบนั้น?
ราหุล

Emacs คีย์ Meta คุณกด Mx ไม่ได้เหรอ?
Braiam

โอ้นั่นคือปัญหาของฉัน ฉันคาดว่า Alt-x จะสร้าง Mx (เช่นเดียวกับในโหมดกราฟิก) แต่มันไม่ได้ทำบน xterm สำหรับฉัน แต่จะสร้าง (ø)
ราหุล

คำตอบ:


13

ตามที่เห็นในArch Wikiคุณจะต้องทำให้ Xterm ส่งคีย์หลบหนีที่ถูกต้องไปที่โปรแกรม:

หากคุณใช้Altคีย์สำหรับแป้นพิมพ์ลัดคุณจะต้องใช้สิ่งนี้ในไฟล์ทรัพยากรของคุณ:

XTerm*metaSendsEscape: true

ดังนั้นเพียงแค่:

echo 'XTerm*metaSendsEscape: true' >> ~/.Xresources

และรีสตาร์ทเซสชัน Xterm ของคุณ


ขอบคุณที่ทำงาน ดังนั้นหาก Alt ส่งการหลบหนีตอนนี้ xterm จะจัดการกับ Escape ได้อย่างไร (หนีทำงานมากเกินไปผมขอให้สำหรับความเข้าใจของฉัน.)
rahul

@ ราอูลฉันไม่ได้พูดว่า "Esc" escape แต่หลบหนีการกดปุ่ม "^ M"
Braiam

4
แทนที่จะรีสตาร์ทเซสชั่นของคุณคุณสามารถเรียกใช้xrdb -merge ~/.Xresources
Christian Fritz

2

หากการอัปเดต ~ / .Xresources ไม่ได้ผลสำหรับคุณให้ทำตามเอกสารอธิบายและอัปเดต ~/.Xdefaults

http://frequal.com/linux/XTermMetaSendsEscape.html


สิ่งนี้ใช้ได้กับฉันในเซิร์ฟเวอร์ X เปล่าเช่นเดียวกับstartx /usr/bin/xtermที่~/.Xresourcesถูกเพิกเฉย
Ruslan

1

มีทางเลือกที่น่าสนใจในการจัดการ.Xdefaults/ .Xresourcesไฟล์ของคุณโดยการระบุสตริงทรัพยากรโดยตรงเป็นxtermตัวเลือกบรรทัดคำสั่ง:

xterm -xrm 'xterm*VT100.metaSendsEscape: true'

สิ่งนี้มีประโยชน์ตัวอย่างเช่นถ้าคุณมีนามแฝงที่กำหนดเองสำหรับx-terminal-emulatorต่อไป

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