2014-06-12 25 views
6

Theo số Emacs' manual, các phím bổ trợ phân biệt chữ hoa chữ thường do "lý do lịch sử".Làm thế nào để tạo ra một keybinding trường hợp nhạy cảm trong Emacs?

Tôi có thể thay đổi hành vi này không?

Mục tiêu của tôi là tạo M-aM-A có nghĩa là những thứ khác nhau.

Cảm ơn!

+0

Theo như tôi biết, họ chỉ coi như là case-insensitive nếu chỉ có một định nghĩa then chốt. Nếu bạn tạo hai nghĩa là định nghĩa khóa chữ thường và một định nghĩa khóa chữ hoa, thì chúng không còn được coi là không phân biệt chữ hoa chữ thường. Sử dụng phương pháp bạn tìm kiếm là rất phổ biến. Ví dụ: '(global-set-key [? \ S-m] 'tối thiểu)' và '(global-set-key [? \ S-M]' tối đa hóa)' – lawlist

Trả lời

8

Theo hướng dẫn,

Một kiểm soát chữ cái -modified luôn coi case-insensitive: Emacs luôn đối xử với C-A như C-a, C-B như C-b, và vân vân. Lý do cho điều này là lịch sử.

Vì vậy, bạn không thể xác định họ thích:

(global-set-key (kbd "C-a") 'xxx) 
(global-set-key (kbd "C-A") 'yyy) 

nhưng S- có thể được sử dụng cho phím Shift, vì vậy:

(global-set-key (kbd "C-a") 'xxx) 
(global-set-key (kbd "C-S-a") 'yyy) ;; C-A 

là OK. Và

Đối với tất cả các công cụ sửa đổi khác, bạn có thể sửa đổi các ký tự chữ cái phân biệt chữ hoa chữ thường khi bạn tùy chỉnh Emac. Ví dụ, bạn có thể làm cho M-a và M-A chạy các lệnh khác nhau.

Vì vậy, bạn có thể định nghĩa chính ràng buộc như thế này:

(global-set-key (kbd "M-a") 'xxx) 
(global-set-key (kbd "M-A") 'yyy) 
+0

Tôi thực hiện điều này khá thường xuyên, thực sự. Nó có nghĩa là gọi ra trong doc cho mã của tôi, tuy nhiên, rằng 'C-A' là aka' C-S-a' (hoặc ngược lại). Bản thân Emacs luôn sử dụng ký hiệu sau, với công cụ sửa đổi Shift rõ ràng. – Drew

Các vấn đề liên quan