13

emacsで、現在のバッファーのシャドウ/オーバーライドされたキーバインディングを表示するにはどうすればよいですか?実行中は表示されませんdescribe-bindingsC-h b)。

言い換えると、バッファでアクティブなモードに競合するキーバインディングがあるかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

11

ただ電話してdescribe-modeください:C-hm

モードdocstringの大部分はキーマップを表示し、ここでそれらをリストするために使用されるメソッドは、バインディングがシャドウされているかどうかも示します。

何が影になっているのかはわかりませんが、もちろん、C-hcまたはで確認するのは簡単C-hkです。

例えば:

key             binding
---             -------
[...]
C-M-q           indent-sexp
  (that binding is currently shadowed by another mode)

そのテキストは、関数が呼び出されsubstitute-command-keysたときにモードdocstringを処理する関数によって生成されます。documentation

例えば:

(substitute-command-keys "\\{lisp-interaction-mode-map}")

次の関数も役立ちます。

(key-binding KEY &optional ACCEPT-DEFAULT NO-REMAP POSITION) ;; dominant binding
(global-key-binding KEYS &optional ACCEPT-DEFAULT)
(local-key-binding KEYS &optional ACCEPT-DEFAULT)
(minor-mode-key-binding KEY &optional ACCEPT-DEFAULT) ;; discover keymap(s)
于 2012-12-20T21:08:20.400 に答える
0

それの一体のために私はこれをしました:

(define-key c++-mode-map "\C-c\C-s" 'kaw-sort-projects)

次に、Ch bを実行しました(バインディングを確認するため)。そして、この出力を取得しました:

Major Mode Bindings:
key             binding
---             -------

C-c C-q     c-indent-defun
C-c C-s     kaw-sort-projects
C-c C-u     c-up-conditional
C-c C-w     subword-mode

だからそれは現れているようです。

これはあなたが意味したことですか?

キーを定義するときに以前の値を提供するこの関数を作成しました

(defun define-key-warn (map key fxn)
  "Bind a key and give info message if already bound"
  (setq old-fxn (lookup-key map key))
  (if old-fxn
      (message "INFO: key %s was defined as %s" key old-fxn))

  (define-key map key fxn)
)
于 2012-12-20T13:11:14.953 に答える