2010-12-02 7 views
12

をorg.modeが、EmacsのORGモードでは、すでにこのバウンドを持っています。 org-modeバインディングの代わりに私自身のバインディングを使用するにはどうすればいいですか?上書きCtrlキーを押しながらTABは、私は私自身の使用のためにEmacsで<kbd>はCtrl +</kbd><kbd>タブ</kbd>を使用したい

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

、それはあなたがこのようorg.elで定義されている説明結合組織モード

答えて

19

キーを除いてどこでも動作します::私のの.emacsで

ファイル私が使用

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

これは、org-modeのローカルキーマップの1つであるorg-mode-mapでのみ有効であることを意味します。次のコードは、フックを追加します。このフックは、org-modeの起動時に実行されます。単にキーバインディングをorg-mode-mapから削除します。

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

このコードを.emacsファイルに追加し、emacsを再起動します。

+0

詳細については、このQ & Aを参照してください?私が.emacsに追加することができれば理想的でしょう:) – Zubair

+0

私の.emacsファイルにこのフックを追加しましたが、変更はありません – Zubair

+0

また、org.elのord-defkeyをコメントアウトしましたが、変更はありません。何らかのプリコンパイルが行われていると思いますので、変更されたorg.elファイルは無視されます。 – Zubair

2

あなたが言ったように、org-modeはC-TABに独自のキーバインディングを使用しているため、これは機能しません。つまり、グローバルキーバインドを定義しても、org-modeを呼び出すとすぐに、そのバインドをローカルのキーバインドで上書きします。

あなたは何ができるか、しかし、あなたはORG-モード起動するたびに呼び出されるコールバック関数を追加し、そのコールバック関数では、スイッチ・ビューを呼び出すためのC-TABをリセットします:

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

入れあなたの.emacsファイルの上記の行と次回に新しいEmacsを起動すると、あなたは良いことになるはずです。

+0

私の.emacsファイルの最後に上記の行を追加しましたが、何の影響もありませんでした。 – Zubair

+0

.emacsファイルに行を追加した後、Emacsを再起動しましたか? Emacsのどのバージョンを使用していますか? – Thomas

+0

実際、私はパプリカのバージョンが好きだと思います。私もそれを試しましたが、GNU Emacs 23.1.1ではうまく動作します。 – Thomas

5

有効にするキーバインドを設定するより堅牢な方法どこでもはメジャーモードにかかわらず、カスタムキーマップでグローバルマイナーモードを定義することです。

マイナーモードにもローカルキーマップを設定できます。マイナーモードが有効であるときはいつでも、そのキーマップの定義は、メジャーモードのローカルキーマップとグローバルキーマップ

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

そのようにあなたはメジャーモードのを台無しにする必要はありません両方を上書きしますあなたのキーバインディングを壊すモードに遭遇するたびに、ローカルのキーマップを使用します。私はこの "アドオンフックを" 行を追加します
Globally override key binding in Emacs

関連する問題

 関連する問題