一連のマクロNo.28713
eigodoo1 さん 10/08/04 08:53
 
マクロが複数あって、それを一つの操作で一瞬に処理可能ですか?たとえば以下の5
種類のマクロ操作があるとします:

Control + F1
Control + F2
Control + F3
Control + F4
Control + F5

これらを一つの操作、例えばControl +F9かなんかで処理可能ですか?

[ ]
RE:28713 一連のマクロNo.28714
秀丸担当 さん 10/08/04 09:54
 

それぞのマクロが例えば test1.mac, test2.mac, test3.mac, test4.mac, test5.
mac というファイル名だっとしたら、以下のようなマクロを新たに作るとできる
と思います。

execmacro "test1.mac";
execmacro "test2.mac";
execmacro "test3.mac";
execmacro "test4.mac";
execmacro "test5.mac";

このマクロをまたマクロ登録して、キー割り当てでCtrl+F9に割り当てるとでき
ると思います。

[ ]
RE:28714 一連のマクロNo.28715
eigodoo1 さん 10/08/04 10:11
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>ると思います。




大文字/小文字の区別、正規表現、続けて置換、置換個数の表示、置換前にメッセー
ジを入れるにはどうすればいいですか?

[ ]
RE:28715 一連のマクロNo.28716
eigodoo1 さん 10/08/04 10:45
 
>>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>大文字/小文字の区別、正規表現、続けて置換、置換個数の表示、置換前にメッセー
>ジを入れるにはどうすればいいですか?



早くっ!

[ ]
RE:28716 一連のマクロNo.28718
秀丸担当 さん 10/08/04 11:25
 

>大文字/小文字の区別、正規表現、続けて置換、置換個数の表示、置換前にメッセー
>ジを入れるにはどうすればいいですか?

大文字/小文字の区別、正規表現、続けて置換、置換個数の表示は、それぞれの
マクロの中で書かれていると思います。
変更するとしたら、それぞれのマクロを以前のコメントの例を参考に修正してみ
てほしいです。

置換前のメッセージもそれぞれのマクロで書かれているかもしれませんが、しい
てこのマクロで実行前にメッセージを出すとしたら以下のようにするといいかも
しれません。

message "一連のマクロをまとめて実行します";
execmacro "test1.mac";
execmacro "test2.mac";
execmacro "test3.mac";
execmacro "test4.mac";
execmacro "test5.mac";


test1.mac等のファイル名は、例として書いたものなので、実際のファイル名を
書いてほしいです。
このマクロから呼ばれたマクロの中で、さらに置換前のメッセージや置換個数の
表示がされることになると思います。

呼ばれるマクロの中で、linknext(次の秀丸エディタも続けて置換)が書かれて
いないマクロがあるとしたら、それだけは1つのファイルに対してしか置換され
ないことになってしまうと思います。
呼ばれるマクロでは全てlinknextを書くか、あるいは全てでlinknextを書かない
かのどちらかにしておいたほうがいいかもしれません。

[ ]
RE:28718 一連のマクロNo.28719
eigodoo1 さん 10/08/04 11:36
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>かのどちらかにしておいたほうがいいかもしれません。



以下のように作成したが、全く機能しない。なぜか?

message "英文切りマクロ整理1";
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
execmacro "message_英文切りマクロ1";
execmacro "message_英文切りマクロ2";
execmacro "message_英文切りマクロ3";
execmacro "message_「Fig」を置換";
execmacro "message_「ref」を置換";
    , casesense, regular, linknext;
message str(getresultex(14)) + "個の置換を行いました。";
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;


[ ]
RE:28719 一連のマクロNo.28720
eigodoo1 さん 10/08/04 11:40
 
>>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>


「文法エラーです」の表示が出る。なぜか?

[ ]
RE:28720 一連のマクロNo.28721
秀丸担当 さん 10/08/04 12:05
 

一連のマクロを呼び出すマクロは修正の必要は無くて、以下の通りにするだけで
いいです。
(本当はマクロのファイル名は、最後に「.mac」という拡張子を付けたほうがい
いですが、無くても動きます)

message "英文切りマクロ整理1";
execmacro "message_英文切りマクロ1";
execmacro "message_英文切りマクロ2";
execmacro "message_英文切りマクロ3";
execmacro "message_「Fig」を置換";
execmacro "message_「ref」を置換";


linknextなどを付けたりする必要があるのはここから呼ばれる「message_英文切
りマクロ1」などのそれぞれのマクロで、それぞれで指定していると思います。
置換結果もそれぞれのマクロごとに表示されると思います。

もし、一連のマクロを呼ぶのではなく、複数の置換処理を一度にしてその置換の
総数を最後に一回だけ表示するということになると、こういう方法ではできない
です。
そういうことだとしたら、だんだんと複雑なプログラムのようなマクロを作成す
る必要がでてくることになってしまうと思います。

[ ]
RE:28721 一連のマクロNo.28722
eigodoo1 さん 10/08/04 12:15
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>る必要がでてくることになってしまうと思います。


秀丸担当の言っていることが分からない。上記の5種類のマクロをControl + F12で設
定したのに、できないのはなぜか?


[ ]
RE:28722 一連のマクロNo.28723
eigodoo1 さん 10/08/04 12:16
 
>>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>

「ファイルが見つからない」という表示が出る。なぜか?

[ ]
RE:28721 一連のマクロNo.28724
eigodoo1 さん 10/08/04 12:17
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>る必要がでてくることになってしまうと思います。


「一連のマクロを呼び出すマクロ」とはどういう意味か?

[ ]
RE:28723 一連のマクロNo.28726
秀丸担当 さん 10/08/04 13:33
 

>「ファイルが見つからない」という表示が出る。なぜか?

ということは、例えば

  execmacro "message_英文切りマクロ1";

と書かれている部分のファイル名が違っているということになると思います。
実際のファイル名がどういうものかわからないためこちらからは推測で言うしか
ありませんが、もし.macを付けて保存されていたのであれば、

  execmacro "message_英文切りマクロ1.mac";

というように書く必要があると思います。

「ファイル名が見つかりません。」の下に「ファイル名 = 」と書かれていて、ど
ういうファイルが見つからないのか出ていると思うので、その表示と実際のファ
イル名を見比べていただくと分かるかもしれません。

[ ]
RE:28724 一連のマクロNo.28727
秀丸担当 さん 10/08/04 13:33
 

>「一連のマクロを呼び出すマクロ」とはどういう意味か?

最初のご質問が、「一連のマクロ」という表題で、それを1つの操作でしたいと
いうご質問だったと思うので、そうするためのマクロです。

「一連の」とは、例えば以下の5つのマクロのことです。

  message_英文切りマクロ1
  message_英文切りマクロ2
  message_英文切りマクロ3
  message_「Fig」を置換
  message_「ref」を置換

この5つのマクロを一度に呼び出すマクロという意味です。

[ ]
RE:28727 一連のマクロNo.28729
eigodoo1 さん 10/08/04 13:37
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>この5つのマクロを一度に呼び出すマクロという意味です。

ここで2つの争点がある:

1)これら5種類のマクロを一度で処理したいのだ。可能か?


2)Control + F12で設定すると、「message_英文切りマクロ1」の表示が出るのみで、
何の変化も起こらない。なぜか?



[ ]
RE:28729 一連のマクロNo.28730
eigodoo1 さん 10/08/04 13:38
 
>>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>

「ファイルが見つかりません」と表示される。なぜか?

[ ]
RE:28730 一連のマクロNo.28731
eigodoo1 さん 10/08/04 14:03
 
>>>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>「ファイルが見つかりません」と表示される。なぜか?


マクロファイルを5個送信した。一体、どこが間違っているのか?

[ ]
RE:28731 一連のマクロNo.28732
eigodoo1 さん 10/08/04 14:18
 
>>>>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>マクロファイルを5個送信した。一体、どこが間違っているのか?


もう1個送信する。

[ ]
RE:28732 一連のマクロNo.28733
秀まるお2 さん 10/08/04 14:37
 
 例えばA.macというマクロとB.macというマクロがあって、「A.macというマク
ロを実行してB.macというマクロを実行する」ということ自体をマクロで記述し
たい場合には、

  execmacro "A.mac";
  execmacro "B.mac";

 というような内容のマクロを作成して、それを例えば"C.mac"という名前で保
存すれば、C.macを実行することで、結果として「Aというマクロを実行してBと
いうマクロを実行する」という内容のマクロを実行したことになります。

 そういう話ではありますが、とりあえずそれが理解いただけないとしても、別
の方法もあります。

 例えばA.macの内容が、

    message "A";

 という内容になっていて、B.macの内容が、

    message "B";

 となっていたとすると、C.macの内容として、

    message "A";
    message "B";

 のように書いても同じことになります。

 なので、例えば

 英文切りマクロ1 〜 英文切りマクロ5

 の5つのマクロをまとめて連続実行するマクロを作りたいということでしたら、
それそれのマクロの内容を1つのファイルに連続して記述すればいいです。

 例えば「英文切りマクロ1 」の内容が

message "「Fig.\\t\\n\\n」を「Fig. 」に置換するマクロです";
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "Fig.\\t\\n\\n"
    , "Fig. "
    , casesense, regular, linknext;
message str(getresultex(14)) + "個の置換を行いました。";
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;

 となっていて、

 例えば「英文切りマクロ2 」の内容が

message "「ref.\\t\\n\\n」を「ref. 」に置換するマクロです";
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "ref.\\t\\n\\n"
    , "ref. "
    , casesense, regular, linknext;
message str(getresultex(14)) + "個の置換を行いました。";
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;


 となってるのなら、それを合体させて、例えば

message "「Fig.\\t\\n\\n」を「Fig. 」に置換するマクロです";
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "Fig.\\t\\n\\n"
    , "Fig. "
    , casesense, regular, linknext;
message str(getresultex(14)) + "個の置換を行いました。";
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;
message "「ref.\\t\\n\\n」を「ref. 」に置換するマクロです";
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "ref.\\t\\n\\n"
    , "ref. "
    , casesense, regular, linknext;
message str(getresultex(14)) + "個の置換を行いました。";
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;

 のようにすれば、2つのマクロを連続実行したのと同じようなマクロが完成し
ます。

 上記例では2つのマクロをつっくけてますけど、同様の方で何個のマクロでも
合体させることは出来ます。

 とりあえずそういうやり方でうまくいくかどうかやってみたらどうでしょう
か?

[ ]
RE:28733 一連のマクロNo.28734
秀まるお2 さん 10/08/04 14:45
 
 とりあえずそれがうまく出来たとしたらですけとも、そういう形でマクロを完
成させたとすると、実行途中に何回もメッセージが出てきます。それが面倒とう
ことでしたら、マクロの中にある、例えば

message "「Fig.\\t\\n\\n」を「Fig. 」に置換するマクロです";

 とか、

message str(getresultex(14)) + "個の置換を行いました。";

 とかいう行を削除してしまえばいいです。

 message文は、つまりメッセージを表示するだけの文なので、それが無くなる
とメッセージが出てこなくなります。

 マクロの一番最後にあるmessage文だけは残しておけばいいと思います。

[ ]
RE:28734 一連のマクロNo.28735
eigodoo1 さん 10/08/04 15:20
 
> とりあえずそれがうまく出来たとしたらですけとも、そういう形でマクロを完
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> マクロの一番最後にあるmessage文だけは残しておけばいいと思います。


1)
とりあえず、5種類のマクロが1度に作動したが、RE:28720に記述されたこととと、
当該作動とは何の関係もない。なぜなら、先ほど、マクロを送信したが、下記のこと
をマクロ登録していない。なぜ、下記のことをRE:28720で記述したのか?



message "英文切りマクロ整理1";
execmacro "message_英文切りマクロ1";
execmacro "message_英文切りマクロ2";
execmacro "message_英文切りマクロ3";
execmacro "message_「Fig」を置換";
execmacro "message_「ref」を置換";


2)
ファイル名の最後に.macを付けた方がよいのはなぜか?なぜ、つけるべきだと言明し
ないのか?


[ ]
RE:28735 一連のマクロNo.28736
秀まるお2 さん 10/08/04 15:44
 
> 当該作動とは何の関係もない。なぜなら、先ほど、マクロを送信したが、下記のこと
> をマクロ登録していない。なぜ、下記のことをRE:28720で記述したのか?

 ちょっと質問の意味がよく分かりませんが…。

 とりあえずexecmacroを使うやり方だとしたらそうなるんじゃないかと思って
秀丸担当がそうお返事した訳ですが、それでうまくいかないということならばと
いうことで、僕が代わりに、execmacroを使わないやり方で説明させていただい
た所ですけども…。

> ファイル名の最後に.macを付けた方がよいのはなぜか?なぜ、つけるべきだと言明し
> ないのか?

 人それぞれ考え方の違いがあるのだと思いますけども、僕的には「.mac」を付
けて保存した方がいいと思います。そうした方が、後で「あ、このファイルはマ
クロなんだ」ということが分かりやすいと思うので…。

[ ]
RE:28736 一連のマクロNo.28737
eigodoo1 さん 10/08/04 15:51
 
>> 当該作動とは何の関係もない。なぜなら、先ほど、マクロを送信したが、下記のこと
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>クロなんだ」ということが分かりやすいと思うので…。


秀まるお2の方法でうまく作動した。秀丸担当の方法は論外だ。説明を端折って、丁
寧さが足りない。


[ ]
RE:28737 一連のマクロNo.28738
秀まるお2 さん 10/08/04 16:07
 
 この前は僕がいろいろ間違ったコメントしたせいでかえって余計なお手間を取
らせてしまいました。

 いろいろチームワークで対応させていただきます。

[ ]
RE:28734 一連のマクロNo.28741
eigodoo1 さん 10/08/04 20:18
 
> とりあえずそれがうまく出来たとしたらですけとも、そういう形でマクロを完
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> マクロの一番最後にあるmessage文だけは残しておけばいいと思います。


置換終了後に「ピコン」という音が出ないのはなぜか?

[ ]
RE:28741 一連のマクロNo.28742
秀まるお2 さん 10/08/05 08:56
 
 マクロで置換を実行した場合の話ですよね?

 もしもマクロの最後にmessage文が入っているのでしたら、メッセージの表示
と同時(あるいは少し遅れて)音もなるはずだと思います。

 例えばこちらで、以下のような超簡単なマクロを実行した限りでは、メッセー
ジ表示から少し間が開いて音がなります。

    message "A";

 eigodoo1さんの所では、例え上記のような超簡単なマクロでも音がならないの
でしょうか?

 もし音がまったくならないのでしたら、普通に全置換を実行した後のメッセー
ジの時にも音が出てないんじゃないでしょうか。もしそうだとしたら、コント
ロールパネルの「サウンドとオーディオデバイス」の所の「サウンド」ページの
「プログラムイベント」の中にある

 メッセージ(警告)
 メッセージ(情報)

 の所に何か適当なサウンドが割り当てられてないせいかと思いますけども…。
普通はそこはいじらなくても何かサウンドが割り当てられてるはずだと思います。

[ ]
RE:28742 一連のマクロNo.28743
秀まるお2 さん 10/08/05 09:06
 
 例えばCtrl+F1等に割り当ててるマクロではちゃんと音がなるけども、今回作
成された「Ctrl+F1〜Ctrl+F5までの一連の置換を全部まとめて実行するマクロ」
の場合だけだめということですかね?

[ ]
RE:28743 一連のマクロNo.28748
eigodoo1 さん 10/08/05 22:04
 
> 例えばCtrl+F1等に割り当ててるマクロではちゃんと音がなるけども、今回作
>成された「Ctrl+F1〜Ctrl+F5までの一連の置換を全部まとめて実行するマクロ」
>の場合だけだめということですかね?


Yes.

念のために、当該マクロを送信するので設定方法を教えてください。

[ ]
RE:28743 一連のマクロNo.28749
秀まるお2 さん 10/08/05 22:14
 
 マクロ送っていただきましたけども、message文の場所で見ると、マクロの先
頭に1つあるだけで、それ以外には無いですよね。

 ということは、マクロを実行するはじめに1回メッセージが出て、マクロが終
わった時には何もメッセージは出ないので、音もならないと思います。

 マクロが終わった後にメッセージを表示して音をならすようにということでし
たら、マクロの最後に、

    message "置換完了";

 のような1行を追加すればいいです。

 具体的には、マクロの中身を全部書くならば、以下のようにすればいいと思い
ます。




message "英文切りマクロ整理1";
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "\\. "
    , ".\\t\\n\\n"
    , casesense, regular, linknext;
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "\\.\\n"
    , "\\1.\\t\\n\\n"
    , casesense, regular, linknext;
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "\\>\\n"
    , "\\1\\t\\n\\n"
    , casesense, regular, linknext;
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "Fig.\\t\\n\\n"
    , "Fig. "
    , casesense, regular, linknext;
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;
#searchoptionOrg = searchoption;
$searchbufferOrg = searchbuffer;
$replacebufferOrg = replacebuffer;
replaceallfast "ref.\\t\\n\\n"
    , "ref. "
    , casesense, regular, linknext;
setsearch $searchbufferOrg,#searchoptionOrg;
setreplace $replacebufferOrg;
message "置換完了";

[ ]
RE:28749 一連のマクロNo.28752
eigodoo1 さん 10/08/06 10:53
 
> マクロ送っていただきましたけども、message文の場所で見ると、マクロの先
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>message "置換完了";


丁寧なご説明に感謝します。

[ ]
RE:28749 一連のマクロNo.28790
eigodoo1 さん 10/08/09 22:35
 
> マクロ送っていただきましたけども、message文の場所で見ると、マクロの先
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>message "置換完了";


このマクロの利便性に感謝する一方で、もっと高速にできないかと要望したい。


[ ]
RE:28790 一連のマクロNo.28792
秀まるお2 さん 10/08/10 08:54
 
 秀丸エディタの全置換ですけども、単純な文字列の置換でしたらそれなりに高
速なんですけども、改行を含む文字列を置換するケースについては比較的遅いで
す。特に行数が非常に多いファイルで改行を含む置換を大量実行すると遅いです。

 こういう全置換関係の処理は、万が一、こちらのプログラムミスがあると、フ
ァイルの中身をぼろぼろに破壊して大変なことになってしまうので、やはり安全
性重視で行く(=多少遅くても仕方がない)という感じになってしまいます。

 ということでお願いします。

[ ]