5

私はこの小さな問題を抱えています. soC-. C-x またはのようないくつかのキーバインディングがありますC-. C-m. flyspell-mode をアクティブにすると、これらのコマンドを使用できなくなります。私の .emacs ファイルには、前に次の 2 行があります

(global-unset-key (kbd "C-."))
(define-key (current-global-map) (kbd "C-.") nil)
(global-set-key (kbd "C-. C-l") 'global-linum-mode) 

次に、C-. C-l動作しますが、flyspell-mode がアクティブになっていると動作しません。バインドされているコマンドC-.flyspell-auto-correct-word. 私は次のようにそれを無効にしようとしました:

;; first try
(defun flyspell-auto-correct-word-disable() (define-key (current-local-map) (kbd "C-.") nil))
(add-hook 'flyspell-mode-hook 'flyspell-auto-correct-word-disable)
;; second try
(define-key (current-global-map) [remap flyspell-auto-correct-word] nil)

どの試行も機能しません。どうすればよいですか? Emacs 23 および 24 で試しましたが、同じ問題が発生しました。

4

1 に答える 1

12

どうですか:

(eval-after-load "flyspell"
  '(define-key flyspell-mode-map (kbd "C-.") nil))

最初の解決策はほぼ正しいですが、現在のローカル マップはマイナー モードではなくメジャー モードによって設定されていることを覚えておく必要があります。直接アクセスflyspell-mode-mapして変更するのが最善のオプションです(別のオプションは、それを見つけることですminor-mode-map-alistが、不必要に複雑になると思います)。

eval-after-loadまた、私はそのようなモード固有の設定をフック (この場合、設定は複数回評価されます: 1 つのバッファーがアクティブになるたびに) よりも内部 (つまり、一度評価されることを意味します) に入れることを好みますflyspell-mode。しかし、これは好みの問題であり、どちらでもかまいません。

于 2013-04-18T14:16:46.193 に答える