Bagaimana cara membedakan Cm dari RETURN?


14

Ketika dalam mode javascript mencoba menggunakan C-c C-m imendapatkan kesalahan yang mengatakan " C-c RETtidak terdefinisi?"

Apa yang membuat Emacs percaya saya mendesak RET?

Bagaimana saya bisa membuat pengikatan tombol ini berfungsi dengan baik?


2
Kemungkinan duplikat dengan Benar membedakan Ctrl + i dan Tab
Drew

1
Masalah yang sama, titik masuk yang berbeda, saya pikir akan menyenangkan jika kedua pertanyaan tetap ada untuk orang-orang yang berasal dari pencarian yang berbeda.
Jordon Biondo


Jawaban:


19

Emacs "berpikir" bahwa C-madalah RETkarena "Control M" adalah ASCII kontrol karakter "carriage return". Meskipun alasan ini adalah "historis" Emacs dapat berjalan di terminal dan karenanya perlu mendukung cara terminal masih bekerja sekarang.

Coba buka jendela terminal, ketikkan " ls", dan tekan C-m. Anda akan melihat bahwa itu ditafsirkan sebagai "kembali", meskipun Anda tidak di Emacs.

Lihat Karakter kontrol di Wikipedia untuk detail tentang karakter kontrol.

Untuk membedakan C-mdari RETdalam GUI Emacs, orang dapat mengubah C-ike C-mdalam jawaban @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)

Lihat juga


2
Ini brilian, terima kasih. Sekarang saya dapat memiliki C-mpeta awalan untuk banyak kursor.
John Wiegley
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.