理系学生日記

おまえはいつまで学生気分なのか

cocoaアプリでEmacsキーバインドを使いたい

Chrome の入力フィールドでもカジュアルに(※)Emacs のキーバインドを使いたいと思うことがあります。 Mac の場合、Emacs のキーバインドがデフォルトである程度実現されているわけですが、Ctrl-y で yank (ペースト) するとかは実現できていません。

それを実現する手段というのがあったのでご紹介します。 ご紹介しますと言いながら、以下のエントリ以上に詳しくかける気がしない。

全部読めない忙しい貴兄に対して要約しますと、しなければならないことは以下の 2 つだけです。

  1. ~/Library/KeyBindings/DefaultKeyBinding.dict を作成する
    • ~/Library/KeyBindings/ がなければディレクトリを作りましょう
  2. DefaultKeyBinding.dict に、キーと NSResponder クラスのメソッドとのバインディングを定義する

これにより Emacs の基本的なキーバインドが実現できるわけですが、Emacs のキーバインドを 1 から実現しようとすると、結構つらい。かなりつらい。 このあたりは Github に転がっているので、いくつかご紹介します。

これらを参考にすると、だいたい Emacs っぽいキーバインドになります。 Ctrl-Space (setMark:) とか効かないのは原因がよくわかりません。おしえてください。

ちなみに

Chrome において、テキスト入力の部分を Emacs のキーバインドではなく直接 Emacs で編集したい場合は、Edit with Emacs あたりを使えば良いと思います。 このエントリも、Edit with Emacs で書いてます。