2013-10-11 6 views
5

ich eine benutzerdefinierte Schlüssel Bindung Makro erstellt haben, wie folgt:Emacs Unbind ein Modus des KeyBinding

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

Das Problem ist, dass C-c C-c für python-send-buffer in python-mode definiert ist. Also mein Makro funktioniert für alle Modi außer Python-Modus. Ich gehe davon aus, dass python-mode nach meiner Init-Datei ausgewertet wird, so dass es diese Tastenkürzel überschreibt.

Ich versuchte unsetting C-c C-c(eval-after-load "python-mode") und unter Verwendung von global-unset-key aber das funktioniert nicht. C-c C-c in Python wird immer auf python-send-buffer abgebildet.

Wie kann ich Pythons C-c C-c vollständig deaktivieren und stattdessen mein Makro verwenden?

Ich benutze Emacs 24.2.1.

+0

C-c C-c ist für eine Vielzahl von Modi definiert. Vielleicht sollten Sie in Betracht ziehen, http://StackOverflow.com/Questions/683425/globally-override-key-binding-in-emacs – scottfrazer

+1

Oder nur einen anderen Schlüssel verwenden. 'Cc' gefolgt von einem Kontrollschlüssel (wie' Cc') ist "reserviert für Hauptmodi", was bedeutet, dass Lisp-Code, der einen Hauptmodus definiert, berechtigt ist, ihn zu benutzen (und oft "Cc Cc", wie ScottFrazer) sagte). Die Benutzer haben natürlich weiterhin das Recht, einen solchen Schlüssel zu binden, aber wissen Sie, dass auch die Hauptmodi das tun können. Sie müssen dann vielleicht einen Ersatzschlüssel für diese Modi finden (siehe hierzu die Antworten). . Siehe das Elisp-Handbuch, Knoten 'Key Binding Conventions'. – Drew

+0

@Drew Ich kann nicht scheinen, eine C-x-Bindung zu finden, die frei und leicht zugänglich ist/macht Sinn für diese Copy & Paste, die ich sehr oft verwende. – darksky

Antwort

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

Dies sollte es tun:

(add-hook 'python-mode-hook 
      (lambda() 
      (define-key python-mode-map (kbd "C-c C-c") nil)))