use-packageを使用してキーをバインド解除する


10

私はバインド解除しようとしている org-cycle-agenda-filesにデフォルトで設定されている C-'C-,

私がそうするために選択する武器は、使用パッケージパッケージです。

github.com/use-package/bind-key.el ページ私は、次の行を見つけました:

;; To unbind a key within a keymap (for example, to stop your favorite major
;; mode from changing a binding that you don't want to override everywhere),
;; use `unbind-key':
;;
;;   (unbind-key "c-c x" some-other-mode-map)

これにより、次のバリエーションを試すことに失敗しました。

(unbind-key "C-'" )
(unbind-key "C-," )
(unbind-key "C-'" (org-cycle-agenda-files))
(unbind-key "C-," (org-cycle-agenda-files))
(bind-keys :map org-mode-map
       :unbind "C-'")
(unbind-key "C-'" org-cycle-agenda-files)

それが失敗した後、私はこの問題に対する「伝統的な」解決策を試してみました。

gnu.orgのマニュアルにある情報といくつかのemacs.stackexchangeの回答により、以下の役に立たない大混乱生じました。

(define-key (org-cycle-agenda-files) key nil)
(define-key (current-global-map) "C-'" nil)
(local-unset-key "C-'")
(global-unset-key "C-'")
(with-eval-after-load org-mode
  (unbind-key "C-'" org-mode-map)
  (unbind-key "C-," org-mode-map))
(global-set-key (kbd "C-'") 'nil)

うん....これらのバリエーションはありません。:D

私はすでにいくつかの素晴らしい機能を使用しているので、使用パッケージベースのソリューションを見つけたいと思います。

どんな提案でも大歓迎です。

回答:


14

あなたの場合C-h fと入力しunbind-key、ヘルプは言います:

unbind-keyは、 `bind-key.el 'に自動ロードされるLispマクロです。

(バインド解除キーのキー名とオプションのキーマップ)

文書化されていません。

の2番目の引数unbind-keyは、たとえばキーマップorg-mode-mapです。

これは私にとってはうまくいきます:

(require 'bind-key)
(unbind-key "C-," org-mode-map)
(unbind-key "C-'" org-mode-map)

これを配置するのに適した場所:configは、use-packageフォームのセクションです。


4

解き放たれたものはエレガントに見えませんが、それがこの回答による主なアプローチです。

use-packageについては、次のように:initディレクティブでunbindを使用しています。

:init
(unbind-key "C-'" org-mode-map)
(unbind-key "C-," org-mode-map)

キーマップではまだロードされていない可能性があるため:config、これを内に配置する必要があります。:init:init
ギョーム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.