こういうマクロもう誰か作成されたのではNo.09856
rako さん 01/09/28 10:34
 
みなさん、こんにちは。

早速なのですが、こういうマクロもう誰か作成されたのではないか
と思い、投稿しました。ご存じの方教えて下さい。

1.テキストファイル(a)のある文字を検索する。
2.一致する文字列を含む行を行単位で別のテキストファイル(b)
  に行番号とともに書き出す。この時マークをする。
3.bをダブルクリックすると、aの該当する行にジャンプする。

というものです。1〜2は自力で何とかできましたが、3をどうや
って作ればよいか検討がつきません。

1〜3又は3だけでも、もうどなたかが作成済みであれば、ご存じ
の方教えて下さい。
作成済みでなければ、どうやればよいかご教授下さい。

それと、1〜2のマクロなんですが、クリップボードを経由して、
bに貼り付けるやり方で作成しましたが、aの1行を直接bに書き
込むことはできるんですか?
またマークできる行数は20個と制限があるみたいなのですが、別
の方法でも構いません、何か一致行(一致箇所)を目立つようにす
る方法は有りませんか?

以上、よろしくお願いします。

[ ]
RE:09856 こういうマクロもう誰か作成されNo.09857
ながさわ さん 01/09/28 10:46
 
こんにちは、ながさわです。

>1.テキストファイル(a)のある文字を検索する。
>2.一致する文字列を含む行を行単位で別のテキストファイル(b)
>  に行番号とともに書き出す。この時マークをする。
>3.bをダブルクリックすると、aの該当する行にジャンプする。

ダブルクリックではありませんが、標準状態でF10を押す(タグジャンプ機能を用い
る)ということでしたら、マクロを作るまでもなくgrep機能で実現できます。
検索→grepの実行で、検索文字列はふつうに入力、検索するファイルのコンボボック
スから“(現在の内容)”を選択してOKをクリックしてください。
たぶん、お望みのことができます。

[ ]
RE:09857 こういうマクロもう誰か作成されNo.09858
ながさわ さん 01/09/28 10:49
 
こんにちは、ながさわです。

ごめんなさい、一致行を目立たせたい要望もあったのですね。
先の方法ではそこまでは実現できません。

[ ]
RE:09856 こういうマクロもう誰か作成されNo.09861
TAKA さん 01/09/28 12:18
 
TAKA です。

>1.テキストファイル(a)のある文字を検索する。
>2.一致する文字列を含む行を行単位で別のテキストファイル(b)
>  に行番号とともに書き出す。この時マークをする。
>3.bをダブルクリックすると、aの該当する行にジャンプする。

1、2を自力でされたそうですが、実現できないはずです。
何故なら、マークは最大20箇所しか出来ないためです。

ながさわさんの言われる通り、grepとタグジャンプを使ったので良
いのではないでしょうか?
#おそらく、この機能を知らなくて、マクロでやろうとしたのだと
は思いますが


ダブルクリックにタグジャンプを割り当てることも可能です。
「その他→キー割り当て」で出来ます。


2番のマークの必要性が分かりませんが、マークは制限があります
ので、必要であれば、強調表示の機能を使った方が良いのではない
でしょうか?
「その他→ファイルタイプ別の設定→強調表示」で設定できます。
強調表示に移動したい場合は、「検索→強調表示」で可能です。
強調表示の定義は、マクロから操作することも可能です。


おそらく、grepとタグジャンプで問題は解決すると思いますが、解
決しないようでしたら、何がやりたいか以外に、何故必要なのかが
                      ^^^^^^^
分かれば、より適切なアドバイスが出来ると思います。

今回のやりたいことだけでは、grepとタグジャンプで解決としか判
断できませんでした。特にマークの必要性が分かりませんでした。

[ ]
RE:09857 こういうマクロもう誰か作成されNo.09862
rako さん 01/09/28 12:29
 
ながさわさん、こんにちは。

>検索→grepの実行で、検索文字列はふつうに入力、検索するファイルのコンボボッ
>クスから“(現在の内容)”を選択してOKをクリックしてください。
>たぶん、お望みのことができます。

すみません。元々そういう機能が有ったんですね。
ありがとうございます。

[ ]
RE:09861 こういうマクロもう誰か作成されNo.09863
rako さん 01/09/28 12:50
 
TAKAさん、こんにちは。

>#おそらく、この機能を知らなくて、マクロでやろうとしたのだと
>は思いますが
すみません。無知でした。

>おそらく、grepとタグジャンプで問題は解決すると思いますが、解
>決しないようでしたら、何がやりたいか以外に、何故必要なのかが
>分かれば、より適切なアドバイスが出来ると思います。
マークは単に、検索時に一致した文字列を目立たせたいためだけで
す。が、強調表示では決まった文字列しか目立たせられないの出は
ないかと思います。検索文字列をその都度、強調表示みたいなこと
はできないのでしょうか?何故必要なのかと言われると、テキスト
全体を見たときに、探したい文字列がどの辺にあるかすぐにわかっ
て調子良いからです。ちょっと欲張りなのでしょうか?

[ ]
RE:09858 こういうマクロもう誰か作成されNo.09864
rako さん 01/09/28 12:54
 
>先の方法ではそこまでは実現できません。

それと、クリップボードを経由しないで別のテキストに貼り付ける方法は
無いでしょうか?直接できるとマクロの記述が簡単になると思うのですが。

[ ]
RE:09864 こういうマクロもう誰か作成されNo.09865
ながさわ さん 01/09/28 13:07
 
こんにちは、ながさわです。

>それと、クリップボードを経由しないで別のテキストに貼り付ける方法は
>無いでしょうか?

gettext関数で取り込んで、insert文で挿入といった感じでしょうか?
詳細はそれぞれマクロのヘルプをご覧ください。

[ ]
RE:09863 こういうマクロもう誰か作成されNo.09866
TAKA さん 01/09/28 13:18
 
TAKA です。
仕事に行く前に、少しだけ書いておきます。
次にメールを見るのは、夜になります。

>マークは単に、検索時に一致した文字列を目立たせたいためだけで
>す。が、強調表示では決まった文字列しか目立たせられないの出は
>ないかと思います。検索文字列をその都度、強調表示みたいなこと
>はできないのでしょうか?何故必要なのかと言われると、テキスト
>全体を見たときに、探したい文字列がどの辺にあるかすぐにわかっ
>て調子良いからです。ちょっと欲張りなのでしょうか?

「hidesoft.2:09822 2001/09/19」のマクロで可能です。
若干の改造は必要かもしれませんが、
「find」とか「getsearch」を頭にいれるだけで良いと思います。

強調表示は、強調1〜強調4、行の強調1〜2、特に強調1〜2な
どがあります。

[ ]
RE:09864 こういうマクロもう誰か作成されNo.09867
TAKA さん 01/09/28 13:18
 
TAKA です。

>それと、クリップボードを経由しないで別のテキストに貼り付ける方法は
>無いでしょうか?直接できるとマクロの記述が簡単になると思うのですが。

gettext,x,y,insert,setactivehidemaru,hidemaruhandle
などの命令の組み合わせで出来ます。

具体的にどうしたいかが分かれば、具体的なマクロの記述も可能で
す。


P.S.
マクロのプログラミングの話になりそうでしたら、
「hidesoft.4」に引越しした方が良いかもしれませんね。

[ ]
RE:09865 こういうマクロもう誰か作成されNo.09868
rako さん 01/09/28 13:40
 
ながさわです、こんにちは。

>gettext関数で取り込んで、insert文で挿入といった感じでしょうか?
>詳細はそれぞれマクロのヘルプをご覧ください。

ありがとうございます。

[ ]
RE:09866 こういうマクロもう誰か作成されNo.09869
rako さん 01/09/28 15:50
 
TAKAさん、こんにちは。

>「hidesoft.2:09822 2001/09/19」のマクロで可能です。
>若干の改造は必要かもしれませんが、
>「find」とか「getsearch」を頭にいれるだけで良いと思います。

ありがとうございます。

[ ]
RE:09867 こういうマクロもう誰か作成されNo.09870
rako さん 01/09/28 16:40
 
TAKAさん、こんにちは。

>gettext,x,y,insert,setactivehidemaru,hidemaruhandle
>などの命令の組み合わせで出来ます。
何かヒントを頂けた気がします。

>具体的にどうしたいかが分かれば、具体的なマクロの記述も可能で
>す。
お手数かけます。

>マクロのプログラミングの話になりそうでしたら、
>「hidesoft.4」に引越しした方が良いかもしれませんね。
もし、わからないときはこちらで発言させていただくかもしれません。
ありがとうございました。

[ ]
RE:09870 こういうマクロもう誰か作成されNo.09875
山紫水明 さん 01/09/28 22:14
 
 rakoさん,こんばんは。

 前にもちょっと似た話題がありました。(#08432)
一度次のマクロで試してみてください。

//-----------------------------------------------------------//
$flag = "35";   // 強調1
//$flag = "37";   // 行の強調1
#handle_1 = hidemaruhandle(0);
$folder = directory2;
$file = basename;
$s = input( "検索語" );
localgrep $s;
#handle_g = hidemaruhandle(0);
changename $file + "_" + $s;
setactivehidemaru #handle_1;
openfile "/h";
#handle_2 = hidemaruhandle(0);
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+";
setactivehidemaru #handle_g;
endmacro;
//-----------------------------------------------------------//

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

[ ]
RE:09875 こういうマクロもう誰か作成されNo.09892
rako さん 01/10/01 10:37
 
山紫水明さん,こんにちは。

お返事が遅れて、すみません。

> 前にもちょっと似た話題がありました。(#08432)
>一度次のマクロで試してみてください。

ありがとうございます。試してみます。

[ ]
RE:09875 こういうマクロもう誰か作成されNo.09901
rako さん 01/10/03 09:01
 
山紫水明さん,こんにちは。いつもお世話様です。

>一度次のマクロで試してみてください。
早速使わせて頂いています。ところで、一つお伺いしたいのですが、
単語の一部を検索語に指定して、マクロを実行すると、強調表示されません。
そういう仕様なのでしょうか?

よろしくお願いします。


[ ]
RE:09901 こういうマクロもう誰か作成されNo.09902
ひろ さん 01/10/03 12:29
 
 rako さん今日は、ひろです。
> 単語の一部を検索語に指定して、マクロを実行すると、強調表示されません。
 大文字/小文字などのオプション判定をしていないようです。スレッドを
斜め読みしかしていませんので、ご希望のマクロと異なるかもしれませんが、
末尾のマクロでいかがでしょうか。ただし山紫水明さんのマクロと異な
り、「特に強調2」に検索語を設定します。
//-------------------------------------------------------------------
#handle_1 = hidemaruhandle(0);
$folder = directory2;
$file = basename;
$s = input( "検索語" );
localgrep $s;
#handle_g = hidemaruhandle(0);
changename $file + "_" + $s;
setactivehidemaru #handle_1;
openfile "/h";
#handle_2 = hidemaruhandle(0);
call GetLightChar,searchbuffer;
insert $$return + "\n";
saveas hidemarudir + "\\greptemp.hilight";
setactivehidemaru #handle_1;
closehidemaruforced #handle_2;
loadhilight "greptemp.hilight", 0;
config "y+";
setactivehidemaru #handle_g;
endmacro;

GetLightChar:
  ##option = 0;
  $$string = searchbuffer;
  if(searchoption&32){//あいまい検索
    ##option = 8;
    call TOUPPER $$string;
    $$string = $$return;
  }
  else{
    if(searchoption&1)##option = ##option|32;
    if(searchoption&2 == 0)##option = ##option|8;
    if(searchoption&16)##option = ##option|16;
    if(searchoption&2 == 0 && searchoption&16 == 0){
      call TOUPPER $$string;
      $$string = $$return;
    }
  }
  ##option = ##option|67;
  return str(##option) + "," + $$string;

TOUPPER://小文字を大文字に変換 (半角文字のみ)
  ##char=0x61;
  while(##char<=0x7A){
    call ChangeCharacter $$1,char(##char),char(##char-0x20);
    $$1=$$return;
    ##char=##char+1;
  }return $$1;

ChangeCharacter://buff 中の文字列を置換
//$$1:buff
//$$2:検索文字列
//$$3:置換文字列
  ##change_char=strlen($$2);
  $$string = "";
  while(1){
    ##long = strlen($$1);
    ##number = strstr($$1, $$2);
    if(##number == -1)break;
    else{
      $$string = $$string + leftstr($$1, ##number) + $$3;
      $$1 = rightstr($$1, ##long - ##number - ##change_char);
    }
  }
  return $$string + $$1;

[ ]
RE:09902 こういうマクロもう誰か作成されNo.09906
rako さん 01/10/03 13:45
 
ひろさん,今日は。

>末尾のマクロでいかがでしょうか。ただし山紫水明さんのマクロと異な
>り、「特に強調2」に検索語を設定します。
ありがとうございます。早速やってみます。

[ ]
RE:09901 こういうマクロもう誰か作成されNo.09907
山紫水明 さん 01/10/03 18:13
 
 rakoさん,こんにちは。

》単語の一部を検索語に指定して、マクロを実行すると、強調表示されません。
》そういう仕様なのでしょうか?

 仕様といえば仕様になりますね。
 ひろさんにもコメントいただいていますが,今よく検討する余裕がないので,マ
クロの最初の方の数字を換えてみる方も,試してみてください。

$flag = "1";   // 強調1,単語検索しない

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

[ ]
RE:09907 こういうマクロもう誰か作成されNo.09909
rako さん 01/10/03 20:58
 
山紫水明さん こんばんは。

> 仕様といえば仕様になりますね。
> ひろさんにもコメントいただいていますが,今よく検討する余裕がないので,マ
>クロの最初の方の数字を換えてみる方も,試してみてください。
>
>$flag = "1";   // 強調1,単語検索しない

ありがとうございます。
やってみた所、「greptemp.highlight-ファイルの中身が正しい形式になっていませ
ん。」
という、エラーメッセージが表示されてしまいました。

[ ]
RE:09909 こういうマクロもう誰か作成されNo.09912
山紫水明 さん 01/10/03 22:12
 
 rakoさん,こんばんは。

》やってみた所、「greptemp.highlight-ファイルの中身が正しい形式になってい
》ません。」という、エラーメッセージが表示されてしまいました。

 どうも確かめないでやってしまって申し訳ありません。どういうわけか,確かに
だめですね。
 以下のどれかの数字でやってみてください。

$flag = "65";   // 強調2,単語OFF
$flag = "129";  // 強調3,単語OFF
$flag = "193";  // 強調4,単語OFF

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

[ ]
RE:09912 こういうマクロもう誰か作成されNo.09913
rako さん 01/10/04 09:31
 
山紫水明さん,こんにちは。いつも、御世話様です。

> どうも確かめないでやってしまって申し訳ありません。どういうわけか,確かに
とんでもありません。

> 以下のどれかの数字でやってみてください。
>$flag = "65";   // 強調2,単語OFF
okです。
>$flag = "129";  // 強調3,単語OFF
だめでした。
>$flag = "193";  // 強調4,単語OFF
okです。

ありがとうございます。うまくいったものを使わせていただきます。

[ ]
RE:09913 検索語の強調表示No.09914
山紫水明 さん 01/10/04 16:54
 
 rakoさん,こんにちは。

 二つはうまくいって一安心です。(^^;

》>$flag = "129";  // 強調3,単語OFF
》だめでした。

 どのようになるのでしょう。こちらではうまくいきますが。
「ファイルタイプ別の設定」→「強調表示」の「強調表示3」の設定を確かめてく
ださい。

あと,前回の $flag = "1"; は
$flag = "01";  // 強調1,単語OFF
とすべきでした。その他については,ライブラリにアップした「指定語句の強調表
示マクロ」に説明しています。ご関心あればそのうちにどうぞ。

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

[ ]
RE:09914 検索語の強調表示No.09916
rako さん 01/10/04 19:20
 
山紫水明さん,こんばんは。

>「ファイルタイプ別の設定」→「強調表示」の「強調表示3」の設定を確かめてく
>ださい。
すみません。おっしゃるとおりこの設定を違えていました。

>あと,前回の $flag = "1"; は
>$flag = "01";  // 強調1,単語OFF
>とすべきでした。その他については,ライブラリにアップした「指定語句の強調表
こちらもうまきいきました。

>示マクロ」に説明しています。ご関心あればそのうちにどうぞ。
そう致します。

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

[ ]