emacs の基本操作は
- ファイルを開く(C-x C-f)
- バッファを切り替える(C-x b)
となっている。これらを統一的に扱えるようにする機能としてido-modeが内蔵されている。作者のHPは http://www.cua.dk/ido.html にある。起動するには
(ido-mode t) (require 'ido)
を「~/.emacs.d/init.el」に書き加えればよい。 以前に紹介したemacs本(Emacs実践入門 やEmacsテクニックバイブル)には、このモードは紹介されていない。 おそらく「anything-mode(helm-mode)」ですべてがまかなえて、不要になるからであろう。 以前、anything-mode を使っていたのですが、うまく使えなくて、さらに動作がおかしくなって再インストールしたので、今は使っていません。 もう少し自分自身がemacsにf成長してからこれらを使おうとおもいます。
日本では「anything-mode」が大人気なのか、あまり「ido-mode」の記事がありません。英語では
http://www.masteringemacs.org/articles/2010/10/10/introduction-to-ido-mode/
http://www.emacswiki.org/emacs/InteractivelyDoThings
などに簡単にまとめられて、拡張方法も書かれています。日本語では
http://d.hatena.ne.jp/willnet/20090110/1231595231
にちょこっと書かれています。
基本的に「<F1> f ido-find-file 」で英語に書かれていますが、自分なりに訳しまとめると以下のようになります。
- C-x b:バッファを移動
- 単語を入力し、該当するファイルが絞られ、RETでリストなかで一番前のファイルを開く
- リスト内、C-sで前に、C-rで後ろに移動して、RETでリストなかで一番前のファイルを開く
- TABでバッファ内で補完ができる。
- C-fで通常のファイルを開くモードに、C-bで通常のバッファ移動に
- C-x C-f:ファイルを開く
- 単語を入力し、該当するファイルが絞られ、RETでリストなかで一番前のファイルを開く。
- リスト内、C-sで前に、C-rで後ろに移動して、RETでリストなかで一番前のファイルを開く
- TABでバッファ内で補完ができる。
- リストの一番前がディレクトリの時、RETで次のディレクトリに移動
- BSで、親のディレクトリに移動
- //でルートディレクトリに
- ~/でホームディレクトリ
- C-f で通常のファイルを開くモードに
- C-d でDiredを開く
- M-m でディレクトリを作成
- C-z で余計なおせっかいをとめる。
「C-z」は出典を忘れたのですが、ido-modeで指定のディレクトリで新しいファイルを作成しようとしたら、別ディレクトリの同名ファイルを選んでくれるおせっかいをやめるコマンドで、「ido-find-file」には載っていません。
さらに、
(setq ido-everywhere t) (setq ido-enable-flex-matching t) (setq ido-create-new-buffer 'always) (when (boundp 'confirm-nonexistent-file-or-buffer) (setq confirm-nonexistent-file-or-buffer nil)) (global-set-key (kbd "C-x f") 'ido-find-file-other-window)
を加えています。これで、あいまい検索も許してくれて、新しいファイルやディレクトリを作成する際に、確認が不要になります。 また、「C-x f」で、別ウィンドウでファイルが開くようになる。 ファイルを開くと分割され、カーソルが移動する。