grepの実行No.16531
ター さん 04/01/26 15:31
 
■動作環境
秀丸V4.04 + Windows 2000
[grepのダイアログ]: 普通タイプ

■質問
grepで検索するフォルダを固定にするやり方を教えていただけないでしょうか?
grepを行う場合、いちいち”検索するフォルダ”がファイルオープンのディレク
トリになるので、やりずらいためです。

[ ]
RE:16531 grepの実行No.16532
ENCODINGSHIFTJIS さん 04/01/26 16:07
 
秀丸のショートカットを作ります。
そのプロパティを開き、起動オプション /g を付けます。
リンク先 "C:\Program Files\Hidemaru\Hidemaru.exe" /g
作業フォルダ を検索フォルダにします。
(第1案)

[ ]
RE:16531 grepの実行No.16535
秀まるお2 さん 04/01/26 16:43
 
 秀丸エディタとしては、grep実行時の対象フォルダを特定のフォルダに固定す
る機能はありません。なので、何か他の方法を使わないとダメです。

 ENCODINGSHIFTJISさんのようなやり方は、1つの作戦としていいんじゃないか
と思います。その方法を使うとして、秀丸エディタ上から実行させたい場合は、
作成されたショートカットを起動するためのマクロを1つ用意して、それを使う
作戦になろうかと思います。マクロの内容としては、run文1行だけでいいと思
います。

 あるいは、いつも特定のフォルダでのgrep検索をするのなら、例えば、

    $s = input( "検索するのは?" );
    if( $s == "" ) endmacro;
    grep $s, "*.txt", "c:\\folder\\subfolder", nocasesense;

 のようなマクロを作っておいて、それを実行するという手もあろうかと思いま
す。

 あるいは、マクロを作るまでもなく、grepのダイアログボックス上で、検索対
象ファイルの履歴を毎回引っ張り出して実行するという手もあります。

[ ]
RE:16532 grepの実行No.16537
ター さん 04/01/26 16:46
 
>秀丸のショートカットを作ります。
>そのプロパティを開き、起動オプション /g を付けます。
>リンク先 "C:\Program Files\Hidemaru\Hidemaru.exe" /g
>作業フォルダ を検索フォルダにします。
>(第1案)

ENCODINGSHIFTJISさん、どうもありがとうございます。
確かに起動時にはなりますね。
しかし、ファイルがキー操作フォルダ、表示フォルダ等の複数に分かれていた場合、
そのフォルダを覚えているみたいなので、その場合は固定になりそうもないです。



[ ]
RE:16535 grepの実行No.16539
ター さん 04/01/26 17:04
 
秀まるお2さん、どうもありがとうございます。

> あるいは、マクロを作るまでもなく、grepのダイアログボックス上で、検索対
>象ファイルの履歴を毎回引っ張り出して実行するという手もあります。
現在はおしゃるとおり、そのとおりにやっています。
しかし、プログラム量も半端じゃありませんので、非常に面倒です。
(私はMif○sから乗り換えたものでMif○sではありました。じゃ、”Mif○sを使えば
いいのでは”と言われるかもしれませんが、それは無しということでお願いします。)
マクロを単純にコピーして実行しました。が、grep機能のようにはいかなく、単
語がコピーされないとかあって、それもマクロで作るのでしょうね。

[ ]
RE:16539 grepの実行No.16540
秀まるお2 さん 04/01/26 17:15
 
 履歴の中の、特定の物を、すっと消えないように固定する機能は将来作りたい
なぁと思ったりしてますが、…。grepの検索対象フォルダを固定する機能まで必
要かどうかはちょっと疑問に思いつつも、それはそれで、将来の秀丸拡張ネタと
して参考にさせていただきたいと思います。(っといいつつ、将来の拡張は秀丸
担当の仕事ですが)

> マクロを単純にコピーして実行しました。が、grep機能のようにはいかなく、単
> 語がコピーされないとかあって、それもマクロで作るのでしょうね。

 カーソル位置の単語を拾うことだけはとりあえず出来ます。

    #x = x; #y = y;
    if( selecting ) {
        $s = gettext( seltopx, seltopy, selendx, selendy );
        escape;
    } else {
        wordrightsalnen;
        $s = gettext( #x, #y, x, y );
        moveto #x, #y;
    }
    $s = input( "検索する文字列は?", $s );
    if( $s == "" ) endmacro;
    grep $s, "*.txt", "c:\\folder\\subfolder", nocasesense;

 みたいになりますが、どうでしょ?

[ ]
RE:16540 grepの実行No.16542
ター さん 04/01/26 17:56
 
秀丸
>担当の仕事ですが)
いろいろな担当がいるのですね。
秀丸エディタもこれほどの使いやすさだとやはりいろいろな担当がいて当たり前です
ね、イメージが少人数に思えていました。


> みたいになりますが、どうでしょ?

やってみました。
どうもありがとうございます。
しかし、今までのgrepと同じようでした。
例えば、フォルダをc:\abc\def\cで作業していて、
その検索単語をaaaとして、ご指摘マクロを実行し、1つ上のc:\abc\defフォルダの*.
cの中の検索単語=aaaをヒットさせようとしてもヒットしませんでした。
よかったら、教えてください。

[ ]
RE:16539 grepの実行No.16543
Arimac さん 04/01/26 18:02
 
私は次のような感じのマクロをファンクションキーに登録しています(^^;

if (selecting) {
    getsearch;
    setsearch searchbuffer, 2;
    grep searchbuffer, "*.h;*.c;*.cpp", "検索するフォルダ", casesense, subdir;
} else {
    gowordtop;
    getsearch;
    setsearch searchbuffer, 3;
    grep searchbuffer, "*.h;*.c;*.cpp", "検索するフォルダ", word, casesense,
 subdir;
}

[ ]
RE:16543 grepの実行No.16544
ター さん 04/01/26 18:11
 
>私は次のような感じのマクロをファンクションキーに登録しています(^^;
>
>if (selecting) {
>    getsearch;
>    setsearch searchbuffer, 2;
>    grep searchbuffer, "*.h;*.c;*.cpp", "検索するフォルダ", casesense, subdir;
>} else {
>    gowordtop;
>    getsearch;
>    setsearch searchbuffer, 3;
>    grep searchbuffer, "*.h;*.c;*.cpp", "検索するフォルダ", word, casesense,
> subdir;
>}
やってみました。
どうもありがとうございます。
16542番と同じようでだめでした。


[ ]
RE:16537 grepの実行No.16545
ENCODINGSHIFTJIS さん 04/01/26 18:16
 
話の雰囲気からして、ダイレクトタグジャンプにも感じます

秀丸ダイレクトタグジャンプ、tagsファイルの作成は使っていますね?
ctags,gtags,etags などの結果を変換して秀丸tags形式にすると使えます。
ファイル名をフルパスで出力すると複数フォルダのtagsを1本に合成できます。

htags を使い ソースコードのHTML化 とかもあります。
http://tamacom.com/tour-j.html

[ ]
RE:16544 grepの実行No.16546
Arimac さん 04/01/26 18:27
 
検索するフォルダを"C:\\abc\\def"とするとsubdirが付いているので
そこから下位階層から探します。
下記マクロでは選択しているとその文字列(非単語)で検索。選択していないと
そのカーソル位置の文字列で単語検索をします。

if (selecting) {
    getsearch;
    setsearch searchbuffer, 2;
    grep searchbuffer, "*.h;*.c;*.cpp", "C:\\abc\\def", casesense, subdir;
} else {
    gowordtop;
    getsearch;
    setsearch searchbuffer, 3;
    grep searchbuffer, "*.h;*.c;*.cpp", "C:\\abc\\def", word, casesense, sub
dir;
}

[ ]
RE:16531 grepの実行No.16547
ター さん 04/01/26 18:32
 
みなさん、どうもありがとうございました。
grepをヒントにマクロヘルプを見てやったところできました。

grep $s, "*.c;*.h", "c:\\abc\def", nocasesense, subdir;

とりあえず、これを代用してやります。
いや〜、このフォーラムはACKがすばやくみなさん、肯定的に考えておられるので
秀シリーズに関連するのは何でもすばらしいのかなと勝手思えました。
う〜ん、最高ですね。




[ ]