PIYO - Tech & Life -

Emacsで特定のマイナーモードのキーバインドを無効にする

Emacs editor

新しく導入したマイナーモードが普段使っている(カスタマイズしてある)キーバインドを上書きしてしまってしばらく何が起こったかよくわからなくなるってことがあって、しかもそれを直すのに少々時間を食ったので覚え書きです。

そのまえの雑談

Emacsのページ送り、っつーか画面スクロールはCtrl+v(下側の行へ)Meta+v(上側の行へ)ですが、直感的じゃないとMeta+vが押しづらいのとでカスタマイズしてます。結構おすすめです。

;; M-p for scroll down
(define-key esc-map "p" 'scroll-down)

;; M-n for scroll up
(define-key esc-map "n" 'scroll-up)

このようにするとメタキーを押しっぱなしにした状態でnpでページの上下が可能です。個人的な感覚ですが、pCtrl+pと同じく上側の部分を表示するように移動、nCtrl+nと同じく下側の部分へを表示するように移動だと思っているので、pscroll-upnscroll-downと言うのかなと思っていました。

逆なんですね。

マイナーモードのキーバインドを無効化

最近使っているモードのうち、markdown-modeがMeta-pを再定義していました。長めのMarkdownファイルを編集していて、少し戻りたいなと思ったときにMeta-pを押したらファイルの先頭近くに戻ってしまって自分の位置を見失うみたいな。それが多発しました。

どうやらMeta-pは1つ前のリンクにジャンプするようです。

そこで、markdown-modeのMeta-pを消します。

(define-key markdown-mode-map (kbd "M-p") nil)

この方法今更知ったけどもっと早く知ってればいろいろ回避できたのに。