全文検索+インクリメンタルサーチ isGrep (旧名:IncreMonji)

→Go to English Page

ダウンロード

【ダウンロード】ベクター
または
【インストーラー】 【ポータブル版】

対象OS:Windows2000/XP/Vista/7/8/8.1/10

【旧安定版】
isgrep-1.4.17.exe
isgrep-portable-1.4.17.zip

【開発版インストーラー】
isgrep-1.6.7.exe 2022/7/9
isgrep-portable-1.6.7.zip 2022/7/9

ソフト概要

・インデックス作成不要の全文検索(いわゆるgrep)
・ファイル単位のキャッシュ機能により二回目以降の検索が高速化→キャッシュ機能は外しました
・インクリメンタルサーチによる軽快な全文検索
・インデックス型ではないため、随時更新される開発中のソースコードに対してもリアルタイムで高速検索可能
・キーボードのみによる操作が可能
・大文字・小文字同一視、先頭一致単語、単語単位、正規表現、ローマ字(Options - Romaji Mode)
・マルチスレッド、メモリマップドファイルによる高速検索
・ファイル名検索
・マルチタブによる複数同時検索
・マルチタブの状態保存・復元
・set memory (directory+mask+optionを記録、一発呼び出し)
・検索結果の絞り込み検索(AND検索)
・ShiftJIS、EUC-JP、JIS、Unicode(UTF-16/8)に対応 Options - Character Code Detection で自動判別
・検索結果をセンタリング表示 View - Centering
・検索結果をファイル名順、日付順、サイズ順でソート View - Sort
・検索されたファイルの情報表示
・巨大ファイル(1MB以上のファイル)に対する検索も分割キャッシュにより高速化→キャッシュ機能は外しました
・クリップボード経由の自動検索 Search - Use Clipboard Capture
・ファイルのオープン履歴 View - Jump History
・VUP通知機能、半自動VUP機能
---- Ver.1.1 ----
・preview機能 前後xx行を表示する
・Ctrl+Shift+↑↓、Ctrl+Space でpreview行数切り替え
・ディレクトリ入力欄の補完候補表示
・ファイル名のみ一覧表示にしたとき、ヒット行数、日付, サイズ, 文字コードなどを表示
---- Ver.1.2 ----
・エラーレポート機能(EurekaLog)
・最大検索スレッド数を4→16 ※旧版をご使用の方は設定で16に変更する必要があります
・ディレクトリ入力欄で \キーでサブディレクトリを確定
・タブ切り替えの履歴。Ctrl+Tab, Ctrl+Shift+TabでCtrlキーを押したままにすると古いタブへ移動
・検索結果の行をコピーする機能
・デフォルトの文字コードを指定可能(誤判定する場合に便利)
・コマンドラインから検索する - 現在のタブを使用して検索、すでの同じディレクトリがある場合はそれを利用
・History Jumpしたら、その項目を最新に移動
・Ctrl+Fでショートカットキー文字によるファイルオープンの追加
---- Ver.1.3 ----
・CPUコア数に応じた最適なスレッド数での検索
・最大検索スレッド数を16→32
・Ctrl+Fによるショートカットキー機能を自動的に発動(Tools - Options - Advanced - Shortcutの画面で有効にする必要があります)
・タブの新規追加時、タブ名と検索対象ディレクトリの入力
・表示順に「ヒット件数順」を追加
---- Ver.1.4 ----
・Ctrlキーのチョイ押しによるショートカットキー文字表示
・履歴を使った補完機能
・履歴を使った検索語の候補表示機能
    - Tabで候補一覧に移動
    - ショートカットキーによる選択(フォーカスが候補一覧にあるときに機能します)
    - Search欄にある検索語を履歴から削除 Ctrl+Del
・Alt+Enterキーによる、ファイルの拡張子に応じたファイルオープン
・Smart Caseをオプション扱い(Smart Case: 大文字が一文字でもある場合は、設定にかかわらず大文字・小文字を区別)
・【暫定対応済】検索対象ファイルから抽出した語句による候補表示機能
    - Ctrl+Shift+Pで有効になり、isGrepを終了するまで有効
    - [制約] 英字の単語のみ対象
    - [制約] 検索対象のファイルが変更されても反映されない
    - 検索対象ファイルから候補が見つからない場合は、検索履歴から候補を探す
---- Ver.1.5 ----
・ファイル検索のキャッシュ機能(Use dir cache checkbox)
  - ネットワークドライブなどでファイル検索が速くなる場合があります
  - 二度目の検索から速くなります(速くならない場合はキャッシュは無意味)
  - ファイル構造が変わると正しく動作しません。その場合は一度だけキャッシュをOFF/ONしてください
  - isGrepを再起動するとキャッシュは初期化されます
・ショートカット文字非表示でもCtrl+Aで一番上の検索結果をオープン
・Mask, DirMaskのリスト形式の編集 - Ctrl+:で表示
---- 以上正式版 ----
---- 以下開発版(Ver.1.6) ----
・Shift+Enterで検索結果の文字列の中から検索(一旦エディターを開く手間が省ける)
・これまでのショートカット文字によるファイルオープンに加え、Shift+文字による検索結果へのジャンプ
    ショートカット文字が表示されている状態でShift+文字を押すとエディターを開くのでは無く、その結果へ選択状態が移動する
・検索結果で過去にJumpした項目をマーク表示(左端に<<)、および自動選択
・表示に拡張子順を追加
・VSCode用の設定を追加
・VSCodeの拡張機能に対応 - VSCodeの拡張機能で isgrep を検索してください Ctrl+K Ctrl+Eで付近の単語をisGrepで検索できます
・文字コードの判別に使用している文字数を増やすオプション(デフォルト256バイト→100万文字に変更予定)
・最大タブ数を100→200に変更
・Window Listのインクリメンタルサーチで部分一致にも対応
・行間の設定 Tools - OptionsのView
・秀丸用マクロisgrep.macの追加。従来のmonji.macでは検索時に秀丸が最前面に出てしまう場合があるため。(秀丸の自動起動マクロを使用した場合。DDEによる検索に切り替え)
---- 以下検討中 ----
・Clipboardにあるテキストの検索。通常、Clipboard Copy-> EditorにPaste -> ファイルに保存 -> 検索という一連の作業をやらなくても一発で検索できるようになります
・AND欄による絞り込みに、NOT指定を追加
・曖昧検索
・Search SetのMaskは他のMaskを引用可能に
・AndroidStudio, VSCodeなどにあるCamel検索?
    例えば、略語入力に対応。"AAA"と入力すると"American Automobile Association"がヒットする、みたいな感じ。
・ヒット行がウィンドウ内で表示しきれないとき、フォーカス時に延長表示する
・リモート対応 - SSHでログインして検索
・C++ Builder 10.3への移植。今までC++Builder5(+TntLib)だった(古っ!→意外とC++Builder10のできが悪いので止めるべき?
・検索結果にマーク、コメント
・プレビュー表示:Scintilla?→source-highlight?
・ディレクトリ履歴 - Upper Directoryへ移動後戻す機能
・コマンドライン版、64bit版の用意
・さらなる高速化。(まだ無駄がある)
・bookmark機能/検索 - 検索結果をbookmarkして一発呼び出し、とか。☆ 動作するが作成中。。
・comment機能/検索 ☆ 動作するが作成中。。
・検索結果の履歴
・テキストファイルだけでなく、PDFなどもxdoc2txtを使って対応
・外部アプリとの連携機能(検索要求、検索結果)、標準出力機能(stdout)
・検索結果の比較・差分表示(タブ同士で) →別アプリに任せた方が良いかも?
・コマンドライン版を用意し、サーバーとしての利用など。

以上の検討項目を誰かがやってくれたら楽なんだけど

開発動機

最近のPCは昔に比べて高速になり、小〜中規模のソースコードならばgrepでも数秒以内で検索が完了できる。しかし、多くの検索UIは相変わらずdialogをわざわざ開く必要があり煩わしい。そこでインクリメンタルサーチの全文検索があってもいいのではないか?ということで車輪を再発明することにし た。
当初、databaseを使って高速化しようと思ったが、昨今のPCはとても速いので、Linux kernelなどのような巨大プロジェクトでもない限り、ほとんど不要。むしろインデックス作成や管理の手間がかかり、開発者にとってもユーザーにとっても嬉しくない。そこで発想を転換、というより原始時代に戻してキャッシュ機能などを駆使して高速化するアプローチを採ることにした。これなら、ありふれたgrep検索としてす ぐに作り&使えるので、あとは必要なところを暇を見つけながら徐々に追加していける。

ただ純粋な疑問として、昨今のソースコードの巨大化に対して多くのプログラマーはどのような検索ツールを使っているんだろうか?見たものはすべて自分の頭にある、というような天才的なプログラマーを除けば相変わらずgrepで頑張っているんだろうか?職業的プログラマーならgrep検索で許せるかもしれないが(時間給でもらえるから)、自分のように趣味でプログラミングをやっている人間はgrepはかったるいと思うが・・・

自分が欲しいものを作る、世界に無いものを作る。

などと思いながら作ったけど、結局こういうのは好みの問題なのかな。

使い方

こちら

履歴

こちら

掲示板

掲示板

雑誌掲載・紹介等

開発情報

速度の評価

こちら

開発日記

こちら