つうさにメモブログ

つうさにがメモをブログとして書いていくところ

emacsのC-x RET なんとかのキーバインドの謎が解けた...

一見覚えづらいemacsのデフォルトのキーバインド設定も、開発者はわかりやすいようにしていた...

C-x RET fとかC-x RET rみたいなキーバインド

d.hatena.ne.jp

大昔に、「emacsでファイルを開いたら文字化けしていて、どうやって直すんだろう?」の解決策として上の記事を見つけた。

  • 文字化けしてるので、別の文字コードで開き直したい → C-x RET r
  • 文字化けしてない状態で、文字コードを別のものに変えたい → C-x RET f

このキーバインドがなかなか覚えられなくて、ブックマークして何回かこのページを訪ねていた。何と言ってもRETが急に出てくるのがわからなかった。

ソースに書かれているのはRETじゃなくて

最近こんなニュースがあった。

www.itmedia.co.jp

emacs内のIM (leim)1M-x toggle-input-method(C-\)のステートフルな切り替えしかないよなあと思い、toggle-input-methodのソースコードを眺めてみた。

そしたら これ を見つけた。

github.com

define-keyで書かれているのはRETじゃなくてC-m。つまり C-x RET fC-x C-m fで、C-x RET rC-x C-m rという意味だった。もちろんemacs内でC-mRETキーを押すのと同じなので、どちらのキーバンドでも同じコマンドが呼び出される。

ただ、C-mのmはきっとMule2のmだろう。なんて覚えやすい!

こんな発見も

toggle-input-methodキーバインドは現在C-\だが、 これ を見ると別のキーバインドもあったらしい。

Shiftキー + spaceに割り当てたかったが、shift + spaceは普通にspaceの意味で使う人もいるからダメーってRMSに言われてコメントアウトしたようだ。

以上

久しぶりのブログでした。

emacs-mirrorへのリンクはcommit hashを指定したリンク(2018年12月29日現在で最新のもの)なので、将来mule-cmds.elが変わっても大丈夫なようにしてある😤


  1. LEIM: emacs内の独自のインプットメソッドライブラリ。 emacsはOSがインプットメソッドをサポートしてないような環境でも日本語入力が可能である。

  2. Mule https://ja.wikipedia.org/wiki/Mule。元々はemacsの多言語対応版forkだが、多くの機能は本家に統合された。