Grepのキーワードのカラー表示No.08397
さわ さん 01/04/17 23:42
 
小説やエッセイなどのテキスト文書にgrep検索をかけることが多いのですが、その際、
そのままだとキーワードが埋もれてしまって見つけにくいので、検索に使ったキー
ワードの部分だけカラー表示させたいと思います。

たとえば「犬」でGrepをかけたとき、

犬は歩く。
犬は四本足。
犬は電柱に・・・・
秋田犬の特徴は・・・・

という検索結果の「犬」の部分だけ、赤く表示させたいのです。

今まではそのつど強調表示の設定をしていました。しかし検索結果が不要になったあ
とに再度強調表示を解除したりしなければならず、面倒です。自動的に行なう方法は
あるでしょうか?

[ ]
RE:08397 Grepのキーワードのカラー表示No.08398
山紫水明 さん 01/04/18 09:37
 
 さわさん,こんにちは。

》今まではそのつど強調表示の設定をしていました。しかし検索結果が不要になっ
》たあとに再度強調表示を解除したりしなければならず、面倒です。自動的に行な
》う方法はあるでしょうか?

 次のようなマクロで Grep をするのも一つの方法かと思います。

//-------------------------------------------//
//  強調表示Grep
grepdialog;
#handle_1 = hidemaruhandle(0);
openfile "/h";
#handle_2 = hidemaruhandle(0);
insert "33," + searchbuffer + "\n";
    //強調 1 , 単語 , 大文字/小文字を区別する
    //フラグは適宜書き換え可能
saveas hidemarudir + "\\greptemp.hilight";
setactivehidemaru #handle_1;
closehidemaruforced #handle_2;
loadhilight "greptemp.hilight", 0;
config "y+";
endmacro;
//-------------------------------------------//

この場合は,強調表示1を使用しています。
他の表示を使用する場合は,マクロヘルプの loadhilight を参照してください。
マクロでダイアログを出す場合,(現在の内容)を対象にはできないようです。

     では, (^^)/~
                                        山紫水明

[ ]
RE:08397 Grepのキーワードのカラー表示No.08399
TAKA さん 01/04/18 09:42
 
TAKA です。

>今まではそのつど強調表示の設定をしていました。しかし検索結果が不要になったあ
>とに再度強調表示を解除したりしなければならず、面倒です。自動的に行なう方法は
>あるでしょうか?

解除はどのタイミングで自動で行いたいのでしょうか?

強調表示の設定はファイルタイプ別(拡張子別)に設定出来るので
すが、grep対象としたものはすべてのファイルタイプに対して設定
したいのでしょうか?
それとも、grepを実行したファイルと同一のファイルタイプに対し
てのみ設定したいのでしょうか?

もし、後者でよいなら、マクロを使って比較的簡単に実現できます。
実現の手段は以下の手順になります。
#前者は、出来なくはないが、非常に面倒そうです。

1.grepダイアログ表示
2.強調表示用のファイル名を取得(hilighttitle)
3.強調表示用の文字列をファイルに追加後、反映(loadhilight)

2と3が自動になります。(ユーザーには見えない)


解除の方も、解除用のマクロを作れば、出来ると思います。
例えば、追加した内容をiniファイルに保存しておいて、それをも
とに解除するなどして。

[ ]
RE:08399 Grepのキーワードのカラー表示No.08400
TAKA さん 01/04/18 09:58
 
TAKA です。

>強調表示の設定はファイルタイプ別(拡張子別)に設定出来るので
>すが、grep対象としたものはすべてのファイルタイプに対して設定
>したいのでしょうか?
>それとも、grepを実行したファイルと同一のファイルタイプに対し
>てのみ設定したいのでしょうか?

山紫水明さんのマクロを見ていて、気が付いたのですが、強調表示
したいのは、grep結果のものに対してだったのですね。
大変失礼しました。

山紫水明さんの発言で、すべて解決すると思いますので、今回の私
の発言は無視しておいて下さい。

[ ]
RE:08398 Grepのキーワードのカラー表示No.08402
さわ さん 01/04/18 15:07
 
山紫水明さん

作っていただいたマクロを実行してみました。まさに欲しかった物です。とてもすば
やいお返事、ありがとうございました。

さわ

[ ]
RE:08400 Grepのキーワードのカラー表示No.08403
さわ さん 01/04/18 15:09
 
TAKA さん

いずれにしましてもお返事ありがとうございました。勉強になりました。

さわ

[ ]
RE:08402 RE^2:GrepのキーワードのカラーNo.08432
山紫水明 さん 01/04/20 07:59
 
 さわさん,こんにちは。

 前回のマクロ,正規表現の場合には強調表示になりませんでしたので,少し手を
加えてみました。
 また,通常の Grep の直後の画面で実行した場合には,ダイアログを出さない
で,直接に強調表示するようにしてみました。(現在の内容)を Grep する場合は
こちらの方がいいかも知れません。

//------ 強調表示Grep.mac --------------------------//
if( basename != "" ) grepdialog;
    //Grep の結果の画面から始める場合に対応
#handle_1 = hidemaruhandle(0);
openfile "/h";
#handle_2 = hidemaruhandle(0);
$flag = "33";
    //強調 1 , 単語 , 大文字/小文字を区別する
    //フラグは適宜書き換え可能
if( searchoption >= 16) $flag = str( val($flag) + 16 );
    //正規表現の場合
insert $flag + "," + searchbuffer + "\n";
saveas hidemarudir + "\\greptemp.hilight";
setactivehidemaru #handle_1;
closehidemaruforced #handle_2;
loadhilight "greptemp.hilight", 0;
config "y+";
endmacro;
//-------------------------------------------//

     では, (^^)/~
                                        山紫水明

[ ]
RE:08432 RE^2:GrepのキーワードのカラーNo.08492
さわ さん 01/04/25 22:04
 
山紫水明さん、こんにちは。すっかりお返事が遅れて申し訳ないです。

新しい方を試してみました。普通にGrepしたあとで強調表示できるマクロがあればい
いと思っていたので、ニーズにぴったりです。

ありがとうございました。

さわ

[ ]