置換がうまくいかないNo.03687
ちゅん さん 03/04/09 15:06
 
皆さんこんにちは。ちゅんです。

(2003.4.9)という形式で日付を挿入するマクロを作っています。
一度(2003.04.09)という形式で書き込んで、それを(2003.4.9)に
置換する方法をとろうとしています。

// 日付情報取得
$$date = "(" + year + "." + month + "." + day + ")";

// 範囲選択
##x = x ;
##y = y ;
##strlen = strlen($$date) ;
insert $$date ;
moveto ##x,##y;
beginsel ;
##movex = ##x + ##strlen ;
moveto ##movex,##y;

ここまでのマクロを実行し、別の以下のマクロを実行すると

// 形式置換
replaceall ".0", ".", inselect;

うまくいくのですが、この2つのマクロを一つのマクロに併せる
と何故かうまく行かず、(2003.04.09)という形式のままに
なってしまいます。

いろいろやったのですが、どうしても分かりません。
どうかアドバイスをお願いいたします。。。

[ ]
RE:03687 置換がうまくいかないNo.03690
山紫水明 さん 03/04/09 20:12
 
 ちゅんさん,こんばんは。

》いろいろやったのですが、どうしても分かりません。

 実用的には Mattz さんのご指摘がスマートにできますが,せっかくここまで書
かれたのですから,コメントしておきますと,置換の範囲選択は行単位となりま
す。したがって,

insert $$date; を
insert $$date + "\n";
とすればできるでしょう。

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

[ ]
RE:03690 置換がうまくいかないNo.03693
ちゅん さん 03/04/10 14:21
 
山紫さん、こんにちは。

ありがとうございます。ここまでやったんで、きちんと
動かして自分のものにしたいという欲求が強いです。

>コメントしておきますと,置換の範囲選択は
>行単位となります。したがって,

選択範囲が行単位というのはどこかに書かれているのですか?
一応、ヘルプもFAQも見たのですが。。。

>insert $$date; を
>insert $$date + "\n";
>とすればできるでしょう。

なぜでしょうか。うまく行きません。ますます分からなくなって
きました。。。(^^;

[ ]
RE:03693 置換がうまくいかないNo.03695
ちゅん さん 03/04/10 14:29
 
>>insert $$date; を
>>insert $$date + "\n";
>>とすればできるでしょう。
>
>なぜでしょうか。うまく行きません。ますます分からなくなって
>きました。。。(^^;

追加です。
【エディタの先頭】
(2003.4.10)

(2003.04.10)
【エディタの終わり】

上のように新規作成のエディタのトップでこのマクロを動かすと
思ったとおりに書き込まれるのですが、
数行改行を追加した後に動かすと思ったようには書き込まれません。
うーん。。。なんでだろう。。。

[ ]
RE:03695 置換がうまくいかないNo.03697
Mattz さん 03/04/10 15:09
 
insert $$date;

はそのままでいいんですが、そのあとの置換を

selectline;

replaceall "\\(20[01][0-9]\\.\\f0\\f[1-9]\\.\\f0\\f[0-9]\\)" , "\\0\\2\\4" ,
 regular, inselect;
replaceall "\\(20[01][0-9]\\.\\f1\\f[012]\\.\\f0\\f[0-9]\\)" , "\\0\\1\\2\\4
" , regular, inselect;
replaceall "\\(20[01][0-9]\\.\\f0\\f[1-9]\\.\\f[1-3]\\f[0-9]\\)" , "\\0\\2\\
3\\4" , regular, inselect;

こんな感じにしては?
2019年までしか使えませんが(笑

[ ]
RE:03695 置換がうまくいかないNo.03698
山紫水明 さん 03/04/10 20:42
 
 ちゅんさん,こんばんは。

》上のように新規作成のエディタのトップでこのマクロを動かすと
》思ったとおりに書き込まれるのですが、
》数行改行を追加した後に動かすと思ったようには書き込まれません。
》うーん。。。なんでだろう。。。

 じつは昨日はちゅんさんの現象が再現しました。そこで,"\n"を追加したらうま
くいきました。
 ところが,不思議なことに,今やってみたら,ちゅんさんの元のマクロできちん
とできます。上記の2つの行とも???
 何か他の条件があるのかもしれません。今のところ不可解です。

》ここまでやったんで、きちんと
》動かして自分のものにしたいという欲求が強いです。

 ですよね(^^;

》選択範囲が行単位というのはどこかに書かれているのですか?
》一応、ヘルプもFAQも見たのですが。。。

 次のような文字列を書いてください。

aaaaaa aaaaaaa aaaaaaa

真ん中の aaaaaaa を範囲選択状態にして
置換ダイアログで
検索:a
置換:b
選択範囲内のみ
で全置換をしてみてください。

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

[ ]
RE:03695 置換がうまくいかないNo.03702
ENCODINGSHIFTJIS さん 03/04/11 11:42
 
insert 直後では、範囲全置換はカーソルの位置以降を
置換する?
------------ a.mac
insert "("+year+"."+month+"."+day+")";
beginsel;
replaceall ".0",".",inselect;
golineend;insertreturn;
//
insert "("+year+"."+month+"."+day+")";
beginsel;left 9;
replaceall ".0",".",inselect;
golineend;insertreturn;
//
insert "("+year+"."+month+"."+day+")";
beginsel;left;right;
replaceall ".0",".",inselect;
golineend;insertreturn;
//
insert "("+year+"."+month+"."+day+")";
beginsel;golinetop;
replaceall ".0",".",inselect;
golineend;insertreturn;
//
insert "("+year+"."+month+"."+day+")";
beginsel;golineend;
replaceall ".0",".",inselect;
golineend;insertreturn;
------------------------
(2003.04.11)
(2003.4.11)
(2003.04.11)
(2003.4.11)
(2003.04.11)
----------------------
insert 直後でなく、(行の確定後)では、カーソル行全体
になるようです。

[ ]
RE:03702 置換がうまくいかないNo.03703
秀丸担当 さん 03/04/11 18:46
 
>insert 直後では、範囲全置換はカーソルの位置以降を
>置換する?

この不可解な動きは、調べてみたところ、replaceallのバグで
あることがわかりました。置換ダイアログの場合は行の先頭か
ら検索するところが、replaceallは行の途中からになてしまっ
ていました。
修正させていただきます。

[ ]