AptanaをEmacs+でEmacs風のキーバインドにする
Aptana Studio 3でEmacs+というプラグインを使ってEmacs風キーバインドを使えるようにします。デフォルトでもEmacs風のキーバインドはあるのですが、あまり動作がよくないそうです。
Emacs+ http://www.mulgasoft.com/
インストール
メニューから"Help" -> "Install New Software..."を選択
"Word with:"に http://www.mulgasoft.com/emacsplus/update-site と入力し"Add..."
"Emacs+"と"Emacs+ Options"にチェックして"Next"
認証の画面になるのでacceptして進むとダウロードされます。その後再起動
設定
メニューから"Window" -> "Preferences"を選択
"General" -> "Keys"の"Scheme:"から"Emacs+ Scheme"を選択
これでEmacs風のキーバインドになりますが、細かい所でまだ設定が必要です。
例えば"Ctrl+R"で逆順にインクリメンタルサーチをするところが、他のキーバインドも同時に割り当てられていて、どのコマンドを選ぶかのポップアップが表示されます。
しかも他のキーバインドはPreferencesからは変更できません。これにはAptana独自のBundleという機能が関係しているようです。
https://wiki.appcelerator.org/display/tis/Modifying+your+shortcut+keys#Modifyingyourshortcutkeys-Instructions%28RublebasedCommands%29
こちらのページによると、メニューの"Commands"から使いたいキーバインドとかぶっているものをもつbundleを探して、"Edit this bundle"からソースを編集すればいいらしいのですが、次のようなエラーが出てうまくいきませんでした。
An error occurred while executing C:\Users\user\Aptana Rubles\source.ruble\bundle.rb: (NoMethodError) undefined method `t' for main:Object
仕方がないので、bundleのソースを直接修正します。
bundleの修正
bundleディレクトリは僕の環境だと
C:\Users\[user]\.eclipse\com.aptana.rcp.product_3.0.9.201202141038_1830271537\configuration\org.eclipse.osgi\bundles\88\1\.cp\bundles
にありました。
今回は"Ctrl+R", "Ctrl+/", "Ctrl+Shift+/"の3つのキーバインドについて、それぞれのソースコードを修正します。ソースコード中では、CtrlはM1、ShiftはM2と表されています。
source.ruble\commands\toggle_comment.rb
- cmd.key_binding = ["M1+/", "M1+7", "M1+M2+C"] + cmd.key_binding = ["M1+7", "M1+M2+C"]
source.ruble\commands\insert_block_comment.rb
- cmd.key_binding = 'M1+M2+/' + cmd.key_binding = ''
coffeescript.ruble\commands\run.rb
- cmd.key_binding = 'M1+R' + cmd.key_binding = ''
text.ruble\commands\execute_and_insert.rb
- cmd.key_binding = "CTRL+R" + cmd.key_binding = ""
後はPreferencesからキーの割り当てを変更すれば終わりです。僕は次のように設定しました。
- "Ctrl+/"の"Undo+"を削除
- "Ctrl+Shift+/"に"Redo"を割り当て
- "Ctrl+H"に"Delete Previous"を割り当て
- "Ctrl+H"+他のキーのコマンドを削除しないと"Ctrl+H"単体ではコマンドが動きませんでした