เมื่ออยู่ในโหมด javascript พยายามใช้C-c C-m i
พบข้อผิดพลาดว่า " C-c RET
ไม่ได้กำหนดหรือไม่"
อะไรทำให้ Emacs เชื่อว่าฉันกำลังกดRET
?
ฉันจะทำให้การล็อคปุ่มกดนี้ทำงานอย่างถูกต้องได้อย่างไร
เมื่ออยู่ในโหมด javascript พยายามใช้C-c C-m i
พบข้อผิดพลาดว่า " C-c RET
ไม่ได้กำหนดหรือไม่"
อะไรทำให้ Emacs เชื่อว่าฉันกำลังกดRET
?
ฉันจะทำให้การล็อคปุ่มกดนี้ทำงานอย่างถูกต้องได้อย่างไร
คำตอบ:
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)
ดูสิ่งนี้ด้วย
วิธีแยกความแตกต่าง Ci จาก TAB ซึ่งมีความสัมพันธ์กันอย่างใกล้ชิด
วิธีผูก Ci ต่างจาก TAB อย่างไร และคำตอบนี้โดยเฉพาะ
C-m
เป็นแผนที่คำนำหน้าสำหรับหลายเคอร์เซอร์