ヘルム:Chをオーバーライド


8

私はこの回答に従い、マイナーモードを作成して、キーバインドがメジャーモードによって上書きされるのを回避しました。

だから私はこれを私のinit.elに入れます:

(define-key my-keys-mode-map (kbd "C-h") 'delete-backward-char)
(define-key my-keys-mode-map (kbd "M-h") 'backward-kill-word)

私がにhelm-find-filesいるときを除いて、それはすべてで働いています。一方でM-h作品、C-hしません。2回押すと、Helpバッファに次のように表示されます。

^L
Major Mode Bindings Starting With C-h:
key             binding
---             -------

C-h C-b     helm-send-bug-report-from-helm

^L
Global Bindings Starting With C-h:
key             binding
---             -------

自分のキーバインドを無効C-hhelm-find-filesして使い続けるにはどうすればよいですか?

回答:


6

C-h特別です:htmlモードとカスタムバックスペースキーバインドへの私の回答を参照しください。

つまり、再バインドC-hするたびに、の値も変更する必要がありますhelp-char

そのアクションを無効にするには、

(setq help-char nil)

(別のキャラクターに設定することもできます。)

これに加えて、プレフィックスキーとしてhelm-find-files使用C-hします。以下のコードは、C-h接頭辞をM-mに置き換えます。これにより、C-h「バックスペース」として使用できるように解放されます。

(eval-after-load "helm-files"
  '(let ((helm-find-files-C-h-map (lookup-key helm-find-files-map (kbd "C-h"))))
     ;; make sure C-h is no longer a prefix key
     (define-key helm-find-files-map (kbd "C-h") nil)
     ;; rebind "C-h ..." to "M-m ..." to preserve functionality
     (define-key helm-find-files-map (kbd "M-m") helm-find-files-C-h-map)))

動作しません。今C-hは何もせず、C-h C-h示していますC-h C-h is undefined
Boccaperta-IT '17

@ Boccaperta-IT:答えを更新しました。もう一度試してみてください。
コンスタンティン

コードを追加すると、起動時にエラーが表示されます:Debugger入り-Lispエラー:(void-function keymap)(keymap(keymap(2。helm-send-bug-report-from-helm))keymap(109。helm-help) (104。未定義)(8。未定義)(4。helm-debug-output))(lambda nil(keymap(keymap(2。helm-send-bug-report-from-helm))keymap(109。helm-help )(
104。undefined

(define-key helm-find-files-map (kbd "C-h") nil)作品を使う。使用する必要はありません(setq help-char nil)。私を正しい方向に向けてくれてありがとう。
Boccaperta-IT 2014

@ Boccaperta-IT:答えのコードを修正したと思います(let-formを引用する必要があります)。設定についてはhelp-char、helmを機能させるために必要ではありませんが、他のEmacs機能(スケルトンなど)を機能させるために必要になる場合あります(リンク先の質問を参照)。
コンスタンティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.