วิธีแยก Cm ออกจาก RETURN


14

เมื่ออยู่ในโหมด javascript พยายามใช้C-c C-m iพบข้อผิดพลาดว่า " C-c RETไม่ได้กำหนดหรือไม่"

อะไรทำให้ Emacs เชื่อว่าฉันกำลังกดRET?

ฉันจะทำให้การล็อคปุ่มกดนี้ทำงานอย่างถูกต้องได้อย่างไร


2
การทำซ้ำที่เป็นไปได้ของการแยก Ctrl + i และ Tab อย่างถูกต้อง
Drew

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


คำตอบ:


19

Emacs "คิด" ซึ่งC-mเป็นRETเพราะ "Control M" เป็นอักขระควบคุม ASCII "carriage return" แม้ว่าเหตุผลนี้คือ Emacs "ที่ผ่านมา" สามารถเรียกใช้งานในเทอร์มินัลและดังนั้นจึงจำเป็นต้องสนับสนุนวิธีที่เทอร์มินัลยังคงทำงานอยู่ในขณะนี้

ลองเปิดหน้าต่าง terminal, พิมพ์ " ls" C-mและกด คุณจะเห็นว่ามันถูกตีความว่าเป็น "ผลตอบแทน" แม้ว่าคุณจะไม่ได้อยู่ใน Emacs

ดูควบคุมตัวละครในวิกิพีเดียสำหรับรายละเอียดเกี่ยวกับตัวควบคุม

หากต้องการแยกความแตกต่างC-mจากRETใน Emacs GUI หนึ่งสามารถเปลี่ยนC-iเป็นC-mในคำตอบของ@nispio :

(define-key input-decode-map [?\C-m] [C-m])

;; now we can do this:

(defun my-command ()
  (interactive)
  (message "C-m is not the same as RET any more!"))

(global-set-key (kbd "<C-m>") #'my-command)

ดูสิ่งนี้ด้วย


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