Khi ở chế độ javascript cố gắng sử dụng, C-c C-m i
nhận được thông báo lỗi " C-c RET
không xác định?"
Điều gì khiến Emacs tin rằng tôi đang bức xúc RET
?
Làm thế nào tôi có thể làm cho keybinding này hoạt động đúng?
Khi ở chế độ javascript cố gắng sử dụng, C-c C-m i
nhận được thông báo lỗi " C-c RET
không xác định?"
Điều gì khiến Emacs tin rằng tôi đang bức xúc RET
?
Làm thế nào tôi có thể làm cho keybinding này hoạt động đúng?
Câu trả lời:
Emacs "nghĩ" đó C-m
là RET
bởi vì "Control M" là ký tự điều khiển ASCII "trở về vận chuyển". Mặc dù lý do này là "lịch sử" Emacs có thể chạy trong một thiết bị đầu cuối và vì vậy nó cần hỗ trợ cho cách thức các thiết bị đầu cuối vẫn hoạt động.
Hãy thử mở một cửa sổ đầu cuối, gõ " ls
" và nhấn C-m
. Bạn sẽ thấy rằng nó được hiểu là "trở lại", mặc dù bạn không ở trong Emacs.
Xem ký tự điều khiển trên Wikipedia để biết chi tiết về các ký tự điều khiển.
Để phân biệt C-m
từ RET
trong một giao diện Emacs, người ta có thể thay đổi C-i
để C-m
trong @nispio 's câu trả lời :
(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)
Xem thêm
Làm thế nào để phân biệt Ci với TAB? , có liên quan rất chặt chẽ.
Làm thế nào để ràng buộc Ci khác với TAB? và câu trả lời này nói riêng.
C-m
một bản đồ tiền tố cho nhiều con trỏ.