2013-10-11 19 views
5

tôi đã tạo ra một chìa khóa tùy chỉnh ràng buộc vĩ mô như sau:Emacs Unbind một chế độ của keybinding

(global-set-key (kbd "C-C C-c") "\C-a\C- \C-n\M-w\C-y")

Vấn đề là C-c C-c được định nghĩa cho python-send-buffer trong python-mode. Vì vậy, macro của tôi hoạt động cho tất cả các chế độ ngoại trừ chế độ python. Tôi giả định rằng python-mode được đánh giá sau tệp init của tôi, vì vậy nó sẽ ghi đè liên kết khóa đó.

Tôi đã thử xóa C-c C-c sử dụng (eval-after-load "python-mode") và sử dụng global-unset-key nhưng điều đó không hiệu quả. C-c C-c trong python luôn được ánh xạ tới python-send-buffer.

Tôi làm cách nào để tắt hoàn toàn số C-c C-c của Python và sử dụng macro của tôi?

Tôi đang sử dụng Emacs 24.2.1.

+0

C-c C-c được định nghĩa cho rất nhiều chế độ. Có thể bạn nên xem xét http://stackoverflow.com/questions/683425/globally-override-key-binding-in-emacs – scottfrazer

+1

Hoặc chỉ xem xét sử dụng một khóa khác. 'Cc' theo sau là một phím điều khiển (như' Cc') là "dành riêng cho các chế độ chính", có nghĩa là mã Lisp định nghĩa một chế độ chính có quyền sử dụng nó (và chúng thường sử dụng 'Cc Cc', như ScottFrazer nói). Người dùng vẫn có quyền ràng buộc khóa như vậy, tất nhiên, nhưng chỉ biết rằng các chế độ chính sẽ cảm thấy tự do để làm như vậy, vì vậy bạn có thể cần phải tìm khóa thay thế để sử dụng cho các chế độ như vậy (xem câu trả lời ở đây) . Xem hướng dẫn Elisp, nút 'Quy ước ràng buộc khóa'. – Drew

+0

@ Drew Tôi dường như không thể tìm thấy một ràng buộc C-x miễn phí và dễ truy cập/có ý nghĩa để thực hiện việc sao chép và dán này mà tôi thường sử dụng. – darksky

Trả lời

7
(add-hook 'python-mode-hook 
      (lambda() 
      (local-unset-key (kbd "C-c C-c")))) 
1

này nên làm điều đó:

(add-hook 'python-mode-hook 
      (lambda() 
      (define-key python-mode-map (kbd "C-c C-c") nil))) 
Các vấn đề liên quan