anything導入のeverything 〜3分で使えるanything.el〜

Emacs本を書きました

anything.elは難しいという印象を持っている人がいるようです。 おそらく、導入しにくいのが原因ではないでしょうか。 anything.elを導入するには、変数anything-sourcesを設定する必要がありました。 しかし、これはもはや過去の話です。

Web検索というのは、ときおり古い情報にひっかかることがあります。 情報は鮮度が命です。 世界は刻一刻と変化しています。 正しい情報を得るには、一次情報に当たるのが最短距離です。

anything.elの一次情報は、開発者である僕のブログの最新記事が一次情報になります。 anything.elを検索したところ、古い情報にひっかあり、惑わされ、それでanything.elは難しいという印象を持たれるのは開発者として本意ではありません。

auto-install.elを導入する

インターネットにあるLispプログラムをインストールするのは面倒なものです。 なぜなら、ブラウザからダウンロードして、保存して、バイトコンパイルして、ロードする必要があるからです。 これらの作業を手作業でやるのは好ましくありません。 ましてやanything.elは複数のLispファイルから構成されています。 各ファイルにおいてこれらの作業なんてやってられません。 そこで、auto-install.elを使うことでこれらの作業を自動化します。 Lispファイルはanything.el以外にもたくさんあるので、常備しておきましょう。

auto-install.el導入方法はこちらをどうぞ。 auto-install.elでEmacsLispパッケージを自動インストール→anything.el関連を一括インストール - http://rubikitch.com/に移転しました

anything.el一括インストール

auto-install.elを使えばコマンド一発でanything.elをインストールできます。

M-x auto-install-batch anything

ダウンロードが完了すると、Lispファイルが出てくるのでそのたびにC-c C-cを押してください。 ロードもされるので、すぐに試すことができます。

使ってみる

この時点で初期設定はできているので、すぐにでも試すことができます。

メニューから使う

今やanything.elはメニューから使えます。 現時点では以下のように定義されています。

http://www.rubyist.net/~rubikitch/archive/anything-menubar.png

メニュー説明
All anything commandsM-x anything-execute-anything-command
Find any Files/BuffersM-x anything-for-files
Files:ファイル関係のanythingコマンド
Buffers:バッファ関係のanythingコマンド
Commands:コマンド関係のanythingコマンド
Info:Info関係のanythingコマンド
Tools:その他のanythingコマンド
Prefered OptionsM-x customize-group anything-config

キー割り当てもされていますが、現在議論中なので変更されます。

ファイルやバッファを開く

メニューバーが使えるときはAnything→Find any Files/Buffersを選択してください。 コマンドからはM-x anything-for-filesを実行してください。

実行すると、*anything for files*バッファがポップアップし、バッファ、最近使ったファイル、カレントディレクトリのファイル等が列挙されます。

ここで文字を打ち込むと、候補が絞り込まれていきます。 そして、C-p、C-nで候補を選択し、RET(Enter)で開きます。 絞り込まれる様子はiswitchb.elやido.elと同じような感じです。 候補選択は、あたかもanythingバッファがカレントバッファであるかのようにできます。

anything.elの魅力は、複数のコマンドをひとつのコマンドに集約することです。 M-x anything-for-filesではC-x b、M-x recentf-open-files、C-x C-f等をまとめています。

http://www.rubyist.net/~rubikitch/archive/anything-for-files.png

TAB 〜複数のアクションを使う〜

ファイルやバッファをRETで開くと、現在のウィンドウで開きます。 M-x anythingは、それ以外の開き方もできます。 RETを押す前にTABを押すと、以下のようなアクションリストが出てきます。


Switch to buffer
Switch to buffer other window
Display buffer
Revert buffer
Revert Marked buffers
Kill buffer
Kill Marked buffers
Ediff Marked buffers
Ediff Merge marked buffers

他のウィンドウで開いたり、バッファを削除したり、いろいろなことができることがわかります。

アクションリストも同じように絞り込みができるので、素早くアクションを実行することができます。 アクションはRETで選択します。

アクションも複数持てるので、C-x k、C-x 4 b等も統合していることがわかります。

C-z 〜チラ見する〜

アクションを実行すると、anythingバッファは消滅します。 しかし、バッファやファイルを選択する前にちょっと内容をのぞいてみたいと思うときがあります。 そのときは、C-zを押します。 anythingバッファの隣でそのバッファやファイルが開かれます。 C-M-vとC-M-S-vでスクロールできます。 チラ見した後はRETでそのバッファやファイルを選択します。 C-gでとりやめます。 とりやめたら元のウィンドウ構成に戻ります。

<f1> m 〜ヘルプ〜

anythingでできる操作はたくさんあるので組み込みのヘルプをつけています。 モードラインに基本的な操作方法が書いています。

さらに、 <f1> m で専用のヘルプを読むことができます。 これはdescribe-modeと同じ割り当てになっているので、describe-modeを別なキーにすると、伴って変わります。

その他のanythingコマンドを使う

その他、たくさんのanythingコマンドが使えるようになっています。 メニューからAll anything commandsを開くか、M-x anything-execute-anything-commandを実行してください。 すべてのanythingコマンドをanythingインターフェースで選択できるようになっています。

anything.elの初期設定

anything-startup.elは、anything.el及び各種anythingアプリケーションの初期設定を行います。 .emacsには以下の一行を加えるだけでフル装備になります。 全然難しいことはありません。


(require 'anything-startup)

注意!

anything-sourcesとM-x anythingは非推奨

よくあるanything.el導入記事には「anything-sourcesを設定してM-x anythingを実行する」とありますが、これはもはや時代遅れの方法です。 この方法だと、ひとつのanythingコマンドしか定義されないからです。 一大フレームワークに成長した今、この方法はもったいないのです。

今はanything-other-buffer関数を呼び出すコマンドを定義するように設定します。 この方法ならば、複数のanythingコマンドを定義することが可能になります。 旧来の設定から移行するにはM-x anything-migrate-sourcesを実行します。

なお、互換性のため旧来の設定でも動くようにしてあります。

現在のM-x anythingはあくまでもデモンストレーションという位置付けに過ぎません。 今は設定済みのanythingコマンドをすぐに起動できるようになっています。

返信

To igrep

anything-obsolete.elはなくても問題ありません。

To okd

環境は carbon emacsで22.3.1です。ntemacs 22.2.1(windows7,XP)では 成功してます。不思議なことに他のマシンのcarbon emacs-22.3.1でも 動いているのです。anything-startup.elのversionは同じなのにです。

むう、際どいですね…。 他の設定と干渉していませんか? 「emacs -Q -l /path/to/auto-install.el」の状態だとうまくいきますか?

それでもうまくいかないならば、バックトレースをください。

To okd

Debugger entered--Lisp error: (error "Required feature `anything-startup' was not provided")

これが出るということは、anything-startup.elに (provide 'anything-startup) と書いてないということですね。 もしかしたら他の場所のanything-startup.elが読み込まれている可能性も?

M-x locate-library anything-startup

をやってみてください。