Xcode で Emacs キーバインドを使いたい - Hammerspoon を使う
Hello, Xcode
仕事で iOS アプリを作ることになりました。
当然ながら開発環境は Xcode になります。
今までで最も長い組み込み開発では、Emacs を使ってきました。
Python 開発は、Spyder を使っているものの、keyhac というソフトウェアを使うことで Emacs のキーバインドにしていました。
キーマップの変更手段
El Capitan 以前は Karabiner というソフトを使って、キーマップを入れ替えるのが定番だったようです。
しかし macOS Sierra 以降では使えないとのこと...!!
後継のKarabiner Elements というソフトウェアもリリースされていますが、残念ながら Modifier (Ctrl とか Shift とか) を使ったキーリマップができないようです。
Windows で愛用している keyhac を使ってみましたが、いろいろうまくいかず断念。。
そして候補にあがってきたのが Hammerspoon です。
Hammerspoon
Hammerspoon とは
This is a tool for powerful automation of OS X. At its core, Hammerspoon is just a bridge between the operating system and a Lua scripting engine. What gives Hammerspoon its power is a set of extensions that expose specific pieces of system functionality, to the user.
基本的には Mac の自動化ツールだそうです。
Lua スクリプトで動作を記述し、それを OS に渡すというブリッジの役目をします。
API Document を見るとかなりいろいろできるのですが、今回はキーリマップのためだけに使います。
Hammerspoon のインストール
公式ページ から zip ファイルをダウンロードします。
Hammerspoon.app をアプリケーションディレクトリにコピーすれば OK です。
なお初回起動のときに、Hammerspoon への制御許可を求められます。
システム環境設定 -> セキュリティとプライバシー -> アクセシビリティで Hammerspoon にチェックを入れれば OK です。
キーバインドの実現
こちら の記事をかなり参考にさせていただきました。
というかコア部分はほとんど上記のスクリプトで、一部追加しただけです。
キーバインド
このスクリプトでは Xcode を開いているときに以下のキーバインドを実現します。
- Ctrl + Space
- Mark set
- Ctrl + W
- Cut
- Alt + W
- Copy
- Ctrl + Y
- Paste
- Ctrl + X, Ctrl + F
- Open quickly
- Ctrl + X, Ctrl + S
- Save file
- Ctrl + X, N
- 次のタブへ
- Ctrl + X, P
- 前のタブへ
- Ctrl + X, K
- タブを閉じる
- Alt + Shift + ,
- ファイルの先頭へ移動
- Alt + Shift + .
- ファイルの末尾へ移動
- Ctrl + /
- Undo
- Ctrl + '
- Ctrl + S
- Search
- Ctrl + K
- Kill line
- Alt + V
- Page up