読者です 読者をやめる 読者になる 読者になる

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..."


そのまま"OK"


"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"単体ではコマンドが動きませんでした