簡潔な答え:
(eval-after-load 'cc-mode
'(progn
(define-key c-mode-base-map "/" 'self-insert-command)
(define-key c-mode-base-map "*" 'self-insert-command)))
これが私がそれについて行く方法です:
にバインドされている関数を見つけます/
。C-h k /
「/ は、'cc-cmds.el' でインタラクティブにコンパイルされた Lisp 関数であるコマンド c-electric-slash を実行します」と表示されます。
(へのリンクが表示cc-cmds.el
されない場合は、elisp ソースがインストールされていません。Windows を使用していないと仮定すると、システムのパッケージ マネージャーを使用してemacs-el
パッケージをインストールし、再試行できます。)
そのリンクをたどって を開きcc-cmds.el
ます。を検索しc-electric-slash
ても関数定義以外は見つからないため、キーはこのファイルにバインドされていません。このディレクトリから検索するとcc-mode.el
、次のことがわかります。
(define-key c-mode-base-map "/" 'c-electric-slash)
これで、キーバインディングをオーバーライドする「キーマップ」の名前がわかりました/
。
次のようなものを init ファイルに追加すると、起動時にエラーが発生する可能性があります。
(define-key c-mode-base-map "/" 'self-insert-command)
... init ファイルが cc-mode.el の前にロードされ、c-mode-base-map
未定義であるためです。だから私たちはeval-after-load
(私の答えの一番上にあるように)使用します。最初の引数 は、 cc-mode.el の最後にあるステートメント'cc-mode
と一致する必要があります。意味provide
がわからない場合は、 を実行してください。progn
C-h f progn
このスタイルの Emacs の学習/発見が気に入った場合は、私の「Emacs の学習方法」を読むことを検討してください。