http://rubikitch.com/に移転しました このページをアンテナに追加 RSSフィード

2010-07-18

[][]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

をやってみてください。

shakakushakaku 2010/08/10 14:32 >M-x auto-install-batch anything

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

emacsはほとんど使っていなかったのですが、最近なんとなく使ってみようかという気になっています。
で、このとおりにやってみたのですが、2箇所、gtagsがない、ipaがないとエラーっぽい記述がでました。
ともかく無視してC-c C-cを押してみたら先に進んでインストールができたみたいです。そんなものでしょうか。

taketstakets 2010/08/11 23:03 NTEmacsにてanythingを初めてインストールして使っているのですが、
ウィンドウを左右に分割しているときに、左のウィンドウのファイルを
編集しているときは右側にanythingの画面が、
右側のウィンドウを編集しているときは左側にanythingの画面が出てしまいます。

視線の移動で戸惑ってしまうため、anythingのウィンドウが出る場所を固定
できればと思うのですが、anythingの設定で変更できるものなのでしょうか。

DQNEODQNEO 2010/08/12 21:17 この記事の通りにやったらインストールはできたのですが、emacsを起動しなおすと"File error: Cannot open load file, anything-startup.el"というエラーが出ます。
何がいけなかったのでしょうか。。

saitosaito 2010/09/25 20:36 ファイルをダウンロードした場所が(自分の場合は~/.emacs.d/auto-install)がload-pathに含まれてないのではないでしょうか?

igrepigrep 2011/01/03 12:18 インストール中に
anything-complete.el:119:1:Error: Cannot open load file: anything-obsolete
なんてエラーが出ましたけど"obsolete"なんて言うぐらいだからなくても問題ないですよね?

okdokd 2011/03/01 08:36 >M-x auto-install-batch anything

>ダウンロードが完了すると、Lispファイルが出てくるのでそのたびにC-c C-cを押してください
どうもanything-startup.elで
while: Wrong number of arguments: kill-buffer, 0
なるエラーメッセージがでて失敗します。

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

okdokd 2011/03/02 14:20 rubikitchさんのtwitterから「微細なバグ修正」があったとのこと。
でinstallを試してみました。
M-x auto-install-batch anything
です。インストールは成功しました、ありがとうございました。
いくつかコメントを
1. init.elまたは.emacsの(require 'anything-startup)は失敗します。
2. (require 'anything)でよいのでしょうか。
3. メニューにanythingが出てこなくなりました。
4. 今までのC-xbでanythingが起動してないようです、C-;をanythingに割り当てて問題はないのですが

以上です。

okdokd 2011/03/02 18:27 返信ありがとうございます。
/Applications/Emacs.app/Contents/MacOS/Emacs -Q -l ~/.emacs.d/auto-install/auto-install.el
では、
Compiling file /Users/okada/.emacs.d/auto-install/anything-startup.el at Wed Mar 2 18:07:04 2011
anything-startup.el:12:1:Error: Cannot open load file: anything-config
で終わりますので、anything-confg.elcへのpathがわからないだけかなと思ってます。

installは成功したとして、(require 'anything-startup)は失敗する
ところは変化なしです。バックトレースですが、一応インストールが
成功していると思っていますが念のため、*scratch*で
(setq debug-on-error t)
(require 'anything-startup)
をevalして、
Debugger entered--Lisp error: (error "Required feature `anything-startup' was not provided")
require(anything-startup)
eval((require (quote anything-startup)))
eval-last-sexp-1(t)
eval-last-sexp(t)
eval-print-last-sexp()
call-interactively(eval-print-last-sexp)
recursive-edit()
byte-code("Æ @Ç=ƒ!

okdokd 2011/03/23 18:34 すみません、ちょっとrubukitchさんの回答を見落としてました。
>M-x locate-library anything-startup
やりました、
~/.emacs.d/auto-install/anything-startup.elc
を指してました。それでこのelcファイルを削除して、emacsを
立ち上げ直すと、
(require 'anything-startup)
でもエラーがでなくなりました。
ありがとうございました。

crafcraf 2011/06/15 11:09 >while: Wrong number of arguments: kill-buffer, 0
の件、私もだいぶ昔 http://d.hatena.ne.jp/rubikitch/20091221/autoinstall にコメントした後、自己解決して忘れていたのですが、

auto-install.sh 内
auto-install-handle-download-content と auto-install-cleanup

(kill-buffer)

(kill-buffer nil)
に書き換えて動作しています。
Meadow 3.02 (emacs 22.3.1) には、引数なしのkill-bufferが存在しないようで。

roswellroswell 2012/04/06 09:41 bbdb-create で新規レコードを登録するとエラーになってしまうのですが...
run-hooks: Wrong type argument: stringp, ("" . 0)

"GNU Emacs 23.1.1 (i386-mingw-nt6.0.6002)
of 2009-12-06 on VENUS"
BBDB version 2.35 ($Date: 2004/05/28 14:47:14 $)
anything.el version 1.3.8 (auto-installを用いてinstall)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証