Emacsキーバインド

Unix文化圏で生きてきた(生きている)人は、操作をC-にするためにいろいろ努力するのだと思う。私もファイラやVisualStudio、ブラウザの操作をいろいろカスタマイズしたものである。特にブラウザは一時期こだわっており、完全にマウス操作なしにブラウジングすることを目標としたことがあった。Firefoxではそれを達成するためのadd-onがいくつかあり、例えば
mozdev.org - mozless: index
キーバインドについてはそれらを変更するadd-onがあるが、このmozlessはlessやvi、w3mライクなキーバインドに一括で変更する。さらに
https://addons.mozilla.org/ja/firefox/addon/879
このadd-onは表示されたページ上のリンクにIDを振り画面に表示、そのIDをALT+で打つことでリンク先することができる。これらのようなadd-onを組み合わせることで、マウスなしでもそこそこ快適なブラウジングができていた。
が、まぁやっぱりどこか無理なところもあり、マウスというか、ポインティングデバイスが使えるのであればそちらを使ったほうが効率よいことが多々。そんなわけでブラウザに関しては今はある程度妥協している。

しかし、やっぱりある程度はEmacsキーバインドにしたい。特にIME入力の際、C-hでDeleteはデフォでできるようだが、C-a、C-k、C-b/C-f、とかは使えない。そこで以前はこんなものを使っていた。
XKeymacs
windows環境でキー入力支援を行うソフトウェアはいくつかあって、xkeyemacsもその中の1つ。ファイル操作やキーカーソル操作、コピー&ペースト、IME切り替え、とかをEmacsライクなキーバインドに変更してくれる。
しかしこのツールを使用すると、まずデフォルトですべてのアプリがEmacsキーバインドになる。Office製品にはそれら独自のショートカットキーがあり、xkeyemacsを使うとそれらはすべて上書きされてしまう。まぁアプリ個別に設定を指定できるので適宜必要なキーバインドを無効にしていけばよいわけだが、そうするとEmacsライクなキーバインドWindowsライクなキーバインドが混在してしまう。
例:
Windows C-c:コピー C-v:ペースト C-x:切り取り C-w:ウィンドウ閉じる
Emacs C-w:リージョン切り取り C-v:ページダウン C-x:コマンドプレフィクス
特に、ファイラでのコピペにC-wを割り当てるのは抵抗がある。C-wやM-wはリージョン指定したコピーなので、単体ファイルをコピーする場合は違和感がある。のでC-xやC-cはWindowsの機能のそれに置いておきたいのだが、そうするとEmacsのかなりのキーバインドとコンフリクトする。適度に両立させようとすると両者が中途半端に混在することになる。逆に他のファイル編集ソフトではEmacsキーバインドはかなり有効だが、やっぱりたまにWindowsのデフォのキーバインドとコンフリクトするのでそのたびに首をかしげることになる。また、これだけ環境ごとに違った妙なキー操作をしていると、混乱してしまう。まぁ要は慣れなので仕方ないとは思うが、慣れたら慣れたで今度は他の環境を使わざるを得ない場合に苦労しそうではある。
別のものとしてこんなものもある。
窓使いの憂鬱
窓使いの憂鬱は逆に最初は何もしない(するようにもできるが)。自分で特定のアプリ(またはGlobal)に対してキーバインドをカスタマイズしていくことができる。以前はこれでIMEの起動にShift+Spaceを割り当てたりしてた。このソフトウェアは非常に自由度が高く、カスタマイズ魂を揺さぶられる。とはいえ若干設定が面倒である。アプリのウィンドウ名の取得、変更したいキー名の調査、他の設定とのコンフリクト、あと設定ファイルの記述ルールを多少知っておかないといけない。まぁだからこそ楽しいものでもあるが、とりあえずさっさと環境を整えたい場合には不向きではある。

そんなわけで、研究室での新マシンにはxkeyemacsを入れている。ただ、Windows系のコマンドを多用するアプリでは完全に無効にするなどして対処。そのうち変更の必要がないくらいにカスタマイズされていくだろう。