Làm thế nào để phân biệt Cm với TRẢ LẠI?


14

Khi ở chế độ javascript cố gắng sử dụng, C-c C-m inhận được thông báo lỗi " C-c RETkhô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?



1
Cùng một vấn đề, điểm vào khác nhau, tôi nghĩ sẽ rất tốt nếu giữ cả hai câu hỏi cho những người đến từ các tìm kiếm khác nhau.
Jordon Biondo


Câu trả lời:


19

Emacs "nghĩ" đó C-mRETbở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-mtừ RETtrong một giao diện Emacs, người ta có thể thay đổi C-iđể C-mtrong @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


2
Điều này thật tuyệt vời, cảm ơn bạn. Bây giờ tôi có thể có C-mmột bản đồ tiền tố cho nhiều con trỏ.
John Wiegley
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.