2012-12-20 39 views
20

Ví dụ, trong các quy tắc ứng zen-mã hóa, các "Cj" Shadows hành vi bình thường của "Cj" (newline-and-indent)Bỏ đặt trọng ràng buộc trong emacs

(define-key zencoding-mode-keymap (kbd "C-j") 'zencoding-expand-line) 

Sau đó, làm thế nào tôi có thể bỏ đặt keybinding này và sử dụng C-j cho newline-and-indent một lần nữa?

tôi đã cố gắng này, nhưng nó không hoạt động:

(add-hook 'html-mode-hook 
      (lambda() 
      (progn 
       (zencoding-mode) 
       (local-set-key (kbd "C-j") 'newline-and-indent)))) 

Có ai có ý tưởng về điều này?

+0

Bất cứ ai biết lý do tại sao 'add-hook' không hoạt động trong trường hợp này? – darksky

+1

Nayefc: Mã đó không ảnh hưởng đến sơ đồ bàn phím của chế độ zencoding vì chế độ zencoding là một chế độ nhỏ, và (theo câu trả lời dưới đây), khóa-bộ địa phương ảnh hưởng đến sơ đồ bàn phím của chế độ chính. Chế độ khóa chế độ nhỏ được ưu tiên hơn các sơ đồ bàn phím chế độ chính, do đó, liên kết chế độ zencoding chưa sửa đổi vẫn được sử dụng. – phils

Trả lời

29

Cách chung để unbind một phím (đối với bất kỳ sơ đồ bàn phím) là xác định một ràng buộc của nil:

(define-key KEYMAP KEY nil) 

Để thuận tiện, cũng có hai chức năng tiêu chuẩn cho unbinding từ keymap toàn cầu và từ các địa phương sơ đồ bàn phím (là thường là sơ đồ bàn phím của chế độ chính).

  • (global-unset-key KEY)
  • (local-unset-key KEY)

Những cái là lệnh tương tác, theo bổ sung tương ứng của họ global-set-keylocal-set-key.

Đối với ví dụ cụ thể của bạn, có thể bạn muốn một cái gì đó như thế này:

(eval-after-load "zencoding-mode" 
    '(define-key zencoding-mode-keymap (kbd "C-j") nil)) 
+0

Câu trả lời hoàn hảo tôi sẽ nói. – PascalVKooten

+0

99% thời gian là chính xác những gì bạn muốn. Tuy nhiên, tôi đã bị vấp ngã vào ngày hôm qua và nghĩ rằng tôi sẽ bình luận vì nó vẫn còn tươi mới trong đầu tôi. Một số sơ đồ bàn phím có các ràng buộc mặc định, tức là bất kỳ khóa nào không được ràng buộc rõ ràng ràng buộc với một số lệnh thay vì không có gì. Trong trường hợp của tôi nó là isearch-mode-map, mặc định là isearch-other-meta-char cho các khóa bắt đầu bằng M- hoặc ESC. – jpkotta

+1

Có lẽ đây là toàn bộ câu hỏi, nhưng cách tốt nhất để tìm ra tên của sơ đồ bàn phím là gì nếu tôi chưa biết nó là gì? –

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