2012-12-20 14 views
20

na przykład w kodeksach zen-kodowanie klucz, „Cj” cienie normalne zachowanie „Cj” (newline-and-indent)Wyłączony wiąże w emacs

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

Więc jak mogę rozbroić to kombinacja klawiszy i wykorzystanie C-j dla newline-and-indent ponownie?

Próbowałem to, ale to nie działa:

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

Czy ktoś ma pomysły na ten temat?

+0

ktoś wie dlaczego 'dodatek hook' nie działa w tym przypadku? – darksky

+1

Nayefc: Ten kod nie ma wpływu na mapę klawiszy w trybie zencoding, ponieważ tryb zencoding jest trybem pomocniczym i (zgodnie z odpowiedzią poniżej) klawisz ustawiania lokalnego wpływa na mapę klawiszy głównego trybu. Mapy klawiszy z mniejszym trybem mają pierwszeństwo przed mapami klawiszy trybu głównego, więc nadal niezmodyfikowane wiązanie trybu zencoding było nadal używane. – phils

Odpowiedz

29

Ogólny sposób rozpiąć klucza (dla dowolnego ustawień) jest zdefiniowanie wiązania nil:

(define-key KEYMAP KEY nil) 

Dla wygody, istnieją również dwie standardowe funkcje niewiążące z globalnej mapy klawiatury i od lokalnego mapa klawiszy (która jest zwykle mapy klawiszy głównego trybu).

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

te polecenia te są interaktywne, jak na ich dopełnień global-set-key i local-set-key.

Co do konkretnego przykładu, prawdopodobnie chcesz coś takiego:

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

Doskonała odpowiedź Chciałbym powiedzieć. – PascalVKooten

+0

99% czasu jest dokładnie to, co chcesz. Jednak wczoraj się potknąłem i pomyślałem, że skomentuję, ponieważ jest wciąż świeży w mojej głowie. Niektóre mapy klawiszy mają domyślne powiązania, tj. Każdy klucz, który nie jest jawnie związany, domyślnie jest ustawiony na niektóre polecenia zamiast na nic. W moim przypadku była to mapa trybu wyszukiwania, która domyślnie jest ustawiona na isearch-other-meta-char dla kluczy zaczynających się od M- lub ESC. – jpkotta

+1

Może to być całe pytanie, ale jaki jest dobry sposób na określenie nazwy mapy klawiszy, jeśli jeszcze nie wiem, co to jest? –

Powiązane problemy