[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

47. 文字の検索・置換の目次 (2005/05/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=search%20index"
"MeadowMemo/文字の検索・置換の目次"へのコメント(無し)
検索全文Elisp


この章で紹介していること

Meadow には非常に多くの検索方法があります.あまりにいろいろあって混乱するほどで す.このページでも,いくつかの章で紹介してますが,散乱していて一覧することはでき ません.

そこで,主なものをまとめてみました.主要なものはこれですべてだと思います.

まぁ,私が作ったのは主要なものではないですが,,,



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

47.1 検索方法の違い (2003/10/27)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=search%20merit"
"MeadowMemo/検索方法の違い"へのコメント(無し)
検索全文Elisp

一言で文字の検索といっても非常に多くの方法があります.そこで,ここでは各方法の欠 点,利点を説明します.

どんな種類があるのか?

検索の方法は大きく分けると 4 つあります.

最後のものは特別として,他の 3 つに関しては,ファイル数などで以下のように使い分 けます.

以下で順に利点などを説明します.

バッファを検索するもの

isearch や migemo , occur , moccur といったものが該当します.

バッファを検索しますので,編集中のファイルでも検索できます.また,操作性も軽快で 気軽に実行できます.

しかし,多くのファイルを検索すると時間がかかります.

ファイルを検索するもの

grep や etags などの外部コマンドを利用するものと dired-do-search や dmoccur などの 外部コマンドを必要としないものがあります.

外部コマンドを利用するものの場合,多くのファイルでも素早く検索することができます. しかし,実用を考えると 100 個を超えると,待ち時間が長くなってしまいます.また, 編集中のファイルは保存しない限り検索することはできません.

外部コマンドを必要としないものは検索する速度が遅いという欠点があります.また,多 くのファイルを検索するのにも適していません.しかし, dired などから検索するファ イルを指定でき,操作性がいいという利点があります.

インデックス型のもの

namazu が代表的なソフトです.

これは,あらかじめインデックスを作っておき,それを検索するという方法です.これに より, 1 万個といった大量のファイルでも一瞬で検索できます.

しかし,インデックスを検索しますので,ファイルを更新したり新規に作成しても,イン デックスが更新されない限り,そのファイルや編集した部分を検索することはできません.

また,検索で分かるのは,以前そのファイルにその文字があったということだけです.ど の行にあったのか,今でもあるのかは分かりません.

特定の用途に合わせたもの

代表格は辞書ソフトです.英和辞書や国語辞書などがあります.これは,用途は限られる ものの,その用途に応じた拡張がなされています.

他にはファイル名の検索などもあります.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

47.2 文字の検索 (2005/05/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=search%20func"
"MeadowMemo/文字の検索"へのコメント(無し)
検索全文Elisp

(regexp) とあるのは正規表現で検索ができることを意味しています. 単に (regexp) で はなく (-regexp) と - がついているのは,正規表現が使える関数と使えない関数がある ということを意味しています.

ファイル名自体を検索

ファイルの中から文字を検索

ミニバッファを検索

辞書を検索

その他

関数 (検索エンジンへのリンク)

関連ソフト



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

47.3 文字の置換・編集 (2004/02/03)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=replace%20func"
"MeadowMemo/文字の置換・編集"へのコメント(無し)
検索全文Elisp

カレントバッファのみが対象

複数のバッファ

関数 (検索エンジンへのリンク)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

47.4 検索・置換を強化する Elisp (2004/02/16)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=search%20addon"
"MeadowMemo/検索・置換を強化するElisp"へのコメント(無し)
検索全文Elisp

ここでは, grep や occur , isearch など複数の検索方法を強化する Elisp を紹介し ます. grep や occur にのみ関連する Elisp は個別のページで紹介していますので, 以下の章を探してください.

その他,検索関連の関数なども紹介します.

47.4.1 occur や grep で別ウィンドウに該当行を表示 ― fm (2003/11/11)  
47.4.2 曖昧検索 ― levenshtein-distance (2003/11/12)  
47.4.3 曖昧検索 ― approx-search (2004/02/16)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

47.4.1 occur や grep で別ウィンドウに該当行を表示 ― fm (2003/11/11)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=fm"
"MeadowMemo/occurやgrepで別ウィンドウに該当行を表示―fm"へのコメント(無し)
検索全文Elisp
要約

occur や grep の結果バッファでカーソルを移動させるだけで,該当行を別ウィンドウに表 示できます.

何が問題なのか?

grep や occur では検索すると,結果が表示されます.そして,そのバッファでC-c C-c とすることで,該当行へジャンプできます.

しかし,結果を見るために C-c C-c C-x o を繰り返す必要があり,かなり面倒で す.

何ができるのか?

;;; fm.el --- follow mode for compilation/output buffers

検索の結果でカーソルキーで上下させるだけで,該当行が別ウィンドウに表示されます.

インストール方法

fm.elをロードパスの通ったと ころへ置きます.

設定方法

以下を.emacs に追加します

 
(require 'fm)
(add-hook 'occur-mode-hook 'fm-start)
(add-hook 'compilation-mode-hook 'fm-start)

詳しい使い方

occur や grep を行い,結果画面でカーソルを移動させます.それだけで,別ウィンドウに 該当行が表示されます.

表示はfで消すこともできます.

うまく動かない

color-occur や color-grep と干渉するかもしれません.使っているのであれば,設定を 外しておいた方がいいでしょう.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

47.4.2 曖昧検索 ― levenshtein-distance (2003/11/12)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=levenshtein-distance"
"MeadowMemo/曖昧検索―levenshtein-distance"へのコメント(無し)
検索全文Elisp
要約

綴りミスなどで, meadow が meaeow になってしまっても meadow で検索するための関数

何が問題なのか?

綴りミスなどのように数文字異なっても検索したい時があります.しかし,普通の関数で はこれを逃してしまいます.

何ができるのか?

meadow , meaeow , mesdow のような文字をすべて meadow で検索できます.

インストール方法

levenshtein-distance のページ から, levenshtein-distance.el をダウンロードしロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(require 'levenshtein-distance)
(setq ld-LD-cache-enable-p t) ;; キャッシュを利用する場合

詳しい使い方

本来は isearch と組み合わせて利用できるようですが,現在の Meadow では利用できません.

ということで,利用できるのは関数のみです,

コメント

levenshtein-distance.el と isearch.el を見れば,編集すべき場所は分かると思うので, 自分で関数を書き換えれば isearch で曖昧検索も利用できます.ただし, migemo とは共用 できません.

また,検索速度はかなり遅いです.文字が長くなると migemo よりも遅い.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

47.4.3 曖昧検索 ― approx-search (2004/02/16)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=approx-search"
"MeadowMemo/曖昧検索―approx-search"へのコメント(無し)
検索全文Elisp
要約

綴りミスなどで, meadow が meaeow になってしまっても meadow で検索するための関数. levenshtein-distance よりも高速な検索が可能.

何が問題なのか?

綴りミスなどのように数文字異なっても検索したい時があります.しかし,普通の関数で はこれを逃してしまいます.

何ができるのか?

meadow , meaeow , mesdow のような文字をすべて meadow で検索できます.

インストール方法

approx-search.el のページ から, approx-search.el をダウンロードしロードパスの通ったところへ置き ます.

設定方法

以下を.emacs に追加します.

 
(require 'approx-search)
(if (boundp 'isearch-search-fun-function)
    (require 'approx-isearch)
  (require 'approx-old-isearch))
(approx-isearch-set-enable)

詳しい使い方

これで, isearch と組み合わせて利用できます.そのため,普通に isearch を行うと,曖 昧検索ができます.

他に以下の関数も利用できます.

コメント

levenshtein-distance よりも高速での検索が可能です.体感速度では migemo よりも速 いんじゃないでしょうか.


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]