2010-12-02 5 views
12

Ich würde Ctrl +Tab in EMACS für meinen eigenen Gebrauch verwenden möchten, aber Emacs Org-Mode hat bereits diese gebunden. Wie kann ich meine eigene Bindung statt der Org-Modus-Bindung verwenden?außer Kraft setzen Strg-TAB in EMACS org.mode

In meinem .emacs Datei Ich verwende:

(global-set-key (kbd "<C-tab>") 'switch-view) 

und es funktioniert überall, außer in org-Modus

Antwort

19

Der Schlüssel Bindung Sie in org.el wie folgt definiert beschreiben ist:

(org-defkey org-mode-map [(control tab)] 'org-force-cycle-archived) 

Dies bedeutet, dass es nur in org-mode-map, einer der lokalen keymaps org-mode gültig ist. Der folgende Code fügt einen Hook hinzu, der ausgeführt wird, wenn Organisationsmodus gestartet wird. Es entfernt einfach diese Tastenbindung von org-mode-map.

(add-hook 'org-mode-hook 
      '(lambda() 
      (define-key org-mode-map [(control tab)] nil))) 

diesen Code Ihrer .emacs-Datei hinzufügen und dann Emacs neu starten.

+0

Wo habe ich dieses "add-hook" Linie fügen? Wenn ich es zu .emacs hinzufügen könnte, wäre es ideal :) – Zubair

+0

Ich habe diesen Haken zu meiner .emacs Datei hinzugefügt und keine Änderung auch – Zubair

+0

Ich habe auch versucht, den ord-defkey in org.el zu kommentieren, aber keine Änderung. Ich denke, es gibt eine Art Vorkompilierung, so dass die modifizierte org.el-Datei ignoriert wird. – Zubair

2

Dies funktioniert nicht, weil, wie Sie gesagt haben, org-Modus eine eigene Tastatur für C-TAB verwendet. Mit anderen Worten, selbst wenn Sie eine globale Tastaturkürzel definieren, wird, sobald Sie den Organisationsmodus aufrufen, diese Bindung mit ihren lokalen Tastaturbelegungen überschrieben.

Was Sie tun können, ist jedoch eine Callback-Funktion hinzufügen, die aufgerufen wird, wenn Sie org-Modus starten, und in dieser Callback-Funktion, die Sie C-TAB Reset-Schalter-Ansicht aufzurufen:

(add-hook 'org-mode-hook (lambda() (local-set-key [(control tab)] 'switch-view))) 

Put Die obige Zeile in Ihrer .emacs-Datei und das nächste Mal, wenn Sie einen neuen Emacs starten, sollten Sie gut gehen.

+0

Ich habe die Zeile oben am Ende meiner .emacs-Datei hinzugefügt, hatte aber keinerlei Auswirkungen – Zubair

+0

Haben Sie Emacs nach dem Hinzufügen der Zeile zu Ihrer .emacs-Datei neu gestartet? Welche Version von Emacs verwendest du? – Thomas

+0

Eigentlich denke ich, dass ich Paprikas Version besser mag. Ich habe das auch ausprobiert und es funktioniert bei mir in GNU Emacs 23.1.1. – Thomas

5

Eine robustere Methode zum Festlegen der Tastenbelegungen, die wirksam werden sollen überall Unabhängig vom Hauptmodus definieren Sie einen globalen Nebenmodus mit einer benutzerdefinierten Tastenbelegung.

Kleinere Modi können auch lokale Keymaps haben; immer dann, wenn ein kleiner Modus in Kraft ist, überschreiben die Definitionen in seiner keymap sowohl der lokalen keymap wichtigsten Modus und die globale keymap

(http://www.gnu.org/software/emacs/manual/html_node/emacs/Local-Keymaps.html)

Auf diese Weise brauchen Sie nicht mit dem Hauptmodus des mess Lokale Tastaturbelegung jedes Mal, wenn Sie auf einen Modus stoßen, der Ihre Tastaturkürzel überdeckt.

Sehen Sie diese Q & A für Details:
Globally override key binding in Emacs

Verwandte Themen