以前にも書きましたが、UIのEmacs度はUbuntuよりもWindowsのほうがはるかに上でした。
なにしろ、yamy(Yet Another Mado tsukai no Yuutsu: 「窓使いの憂鬱」のキー入力置換をドライバベースからユーザモードフックベースに変更した派生プロジェクト。Windows7やリモートデスクトップでも動作する)を導入すれば、ダイアログだろうがメニューだろうが果てはエクセルだろうワードだろうが、ありとあらゆるものがEmacs操作体系になりました。
例えばVisual Stadioは添付のEmacsキー定義で使うより標準キー定義のままyamyの管理下に置くほうがEmac的だし、その他アプリケーションでも存在しないはずのインクリメンタルサーチがなぜかできてしまったりするのでした。
しかし今の自分はUbuntuです。
GnomeからUnityへの移行に伴い、できることができなくなったり仕様がコロコロ変わっているようですので、自分用備忘録としてまとめます。
.
■ gtk_key_theme
よく知られているカスタマイズ法ですが、Gnome2アプリ(Nautilusやgedit)は基本操作系をEmacs風にすることができます。
- gconf-editorを起動
- desktop/gnome/interfaceを開く
- gtk_key_themeに(なければ作成して)、”Emacs”を指定
しかし、Ubuntu 11.10ではこの指定が働かず、gsettingsを使う必要があります。
$ gsettings get org.gnome.desktop.interface gtk-key-theme 'Default' $ gsettings set org.gnome.desktop.interface gtk-key-theme Emacs $ gsettings get org.gnome.desktop.interface gtk-key-theme 'Emacs'
.
しかも、このキーテーマはEmacsには程遠いものです。
| 1行テキストボックス | ○ | C-f, C-b, C-a, C-eでのカーソル移動が可能 |
| メニュー操作 | ○ | C-f, C-b, C-n, C-pでのメニュー移動が可能 |
| ダイアログリスト | △ | C-n, C-pでのカーソル移動がCtrl+上下(複数選択)になってしまう |
| gedit | △ | 基本操作はEmacsになっているが、C-n、C-pなどメニューアクセスキーが優先される |
| Nautilus | ☓ | メニューアクセスキーが優先され、基本操作もEmacsにならない |
.
■ can_change_accels
キーテーマの変更の不足を補うには、メニューアクセスキーを変更する必要があります。
Gnome2アプリはキーテーマと同じような方法で変更することが可能です。
アクセスキーを削除または変更することで、geditではC-f, C-nのEmacs操作系が使用できるようになります。Nautilusではアクセスキーを削除してもEmacs操作系になりませんが、意図せず新規ウィンドウを開くより無反応のほうがマシです。
- gconf-editorを起動
- desktop/gnome/interfaceを開く
- can_change_accelsをチェックする
- 変更したいメニューをマウスで開き、希望のショートカートを実際に押す
- ひと通りのカスタマイズが終わったら、can_change_acceslのチェックを外す
この方法は、Ubuntu 11.04あたりから機能しません。
前述のgsettingsを試してみましたが、それでも11.04では変更できませんでした。11.10は確認する前に削除してダウングレードしたのでは不明です。
gsettings set org.gnome.desktop.interface can-change-accels true
.
■ accelsファイルの直接編集
GUIでメニューアクセスキーが変更できない場合には、他のマシンで変更した定義ファイルをコピーするか直接編集することなります。
幸い、私はVPSサーバーが10.04でGUIもいれていたので、そちらでカスタマイズした定義ファイルをコピーすることにしました。
定義ファイルは、~/.gnome2/accels 以下です。
geditの定義ファイルはGUI環境でコピー可能ですが、Nautilusの定義ファイルをコピーするにはNautilusが起動していないCUI環境で行う必要があります。
- 他のマシンでカスタマイズ済みの定義ファイルを ~/ にコピーしておく
- GUIをログアウト
- Ctrl+Alt+F4でCUIログイン
- mv ~/nautilus ~/.gnome2/accels/
- CUIをログアウト
- Ctrl+Alt+F8でGUIログイン
.
LibreOffice (OpenOffice.org)
Emacsキー定義セットってあってもよさそうですが既存のものはないですね。
新しいPC環境を作るときに困らないように、キー定義を変更したらその都度エクスポートファイルをDropboxに出力するようにして、Emacs度を高めることにしています。
.
FireFox
KeySnailは他のどのアドオンよりFireFoxをEmacsにしてくれますが、なぜかFireFoxのアドオンライブラリには登録されていません。
配布サイトからダウンロードしたxpiファイルを、FireFoxにドラッグアンドドロップすることでインストールします。
.
Google Chrome
最近は、Emacs-mode を入れてます。
基本的には、gtk_key_themeによりメニュー、アドレス欄、テキストボックス編集はEmacsキーバインドが実現されています。アプリごとに補完する必要があるのは、Ctrl+Sで保存ダイアログで出さないことですがEmacs-modeでそれは実現できます。
しかし、残念なのはCtrl+Sが「リンクのインクリメンタルサーチ」であることです。
インクリメンタルサーチの実現に固執した開発者のマスターベーションでしかありません。普通にCtrl+Sでテキスト検索となってくれるだけで充分だったのに。その点、FireFoxのKeySnailはよくできてます。
.
Thunderbird
KeySnailはThunderbird用もあるのですが、試したときのバージョンが古かったのかインストールできませんでした。最新バージョンは試してません。
.
WordPressプラグインTinyMCE
最近になりようやく気付きました。ビジュアル編集モードのCtrl+Fが検索窓になってしまうのはこいつの所為で、WordPressオリジナルのビジュアルモードであれば、gtk_key_themeにしたがってCtrl+Fでカーソル右を保持していました。
テーブル編集のために導入したものの、ついCtrl+Fを打ち検索窓を開いてしまうのでほとんど生HTMLモードでテキスト編集していました。まったく本末転倒です。
プラグインはjavascriptで記述されているので修正は可能です。
wp-content/plugins/tinymce-advanced/mce/searchreplace/editor_plugin.js から”ctrl+f”を探して”ctrl+s”に書き換えるだけです。でも、バージョンアップの度に書き換えるは面倒かな・・・
