一行の中での置換No.09174
kendo さん 01/06/29 22:24
 
秀丸のもっとも新しいバージョンを使用しています。私の操作上の勘違いなのかもし
れませんが、
 たとえば、

 次のような一行の文があったとします。

 東京へは東京行きの電車で行って東京駅からはこんどはバスで東京ディスニーラン
ド......

 この文の頭から範囲指定を始めて「東京駅」のところまで指定します。そこで置換
としてたとえば「東京」を「新橋」にしたいとおもって置換操作をします。
 するとメニューで置換の仕方を聞いてきますが、すでに範囲指定をしていますので、
「一気」として処理しようと、最後の「東京ディスニーランド」まで置換が及び、そ
こもなんと「新橋ディスニーランド」になってしまいます。
 どうしたらいいのでしょうか。アドバイスお願いいたします。


[ ]
RE:09174 一行の中での置換No.09175
TAKA さん 01/06/29 22:48
 
TAKA です。

> この文の頭から範囲指定を始めて「東京駅」のところまで指定します。そこで置換
>としてたとえば「東京」を「新橋」にしたいとおもって置換操作をします。
> するとメニューで置換の仕方を聞いてきますが、すでに範囲指定をしていますので、
>「一気」として処理しようと、最後の「東京ディスニーランド」まで置換が及び、そ
>こもなんと「新橋ディスニーランド」になってしまいます。
> どうしたらいいのでしょうか。アドバイスお願いいたします。

これは、秀丸の仕様です。置換の際に、
>「選択した範囲のみ」の範囲は行単位(改行までの範囲)となりま
>す。
というメッセージが出る通り、行単位で置換を行います。

置換元文字列、置換後文字列が決まっているなら、範囲選択した場
所のみを置換ということがマクロで簡単に出来ます。

[ ]
RE:09175 一行の中での置換No.09176
kendo さん 01/06/29 22:59
 
いつもご指導、ありがとうございます。

>置換元文字列、置換後文字列が決まっているなら、範囲選択した場
>所のみを置換ということがマクロで簡単に出来ます。
 ライブラリには山紫水明さんの置換マクロがありますが、もっと小さなファイルで
TAKAさんがご指摘のことが可能なのでしょうか。


[ ]
RE:09176 一行の中での置換No.09177
TAKA さん 01/06/29 23:12
 
TAKA です。

>>置換元文字列、置換後文字列が決まっているなら、範囲選択した場
>>所のみを置換ということがマクロで簡単に出来ます。
> ライブラリには山紫水明さんの置換マクロがありますが、もっと小さなファイルで
>TAKAさんがご指摘のことが可能なのでしょうか。

以下のマクロで、範囲選択した場所のみを置換することが出来ます。
やっていることは、範囲選択した場所を別の秀丸へ貼り付け、そこ
で全置換を行い、元に戻しているだけです。

// マクロ(ここから)
    $AStr = "東京";     // 置換元文字列
    $BStr = "新橋";     // 置換後文字列
    if( !selecting )
    { // 範囲選択なし
        goto LEND;
    }
    $SearchBuf  = searchbuffer; // 検索条件退避
    #SearchOpt  = searchoption;
    disabledraw;

    // 置換対象を別の秀丸へ貼り付けて全置換を行い元に戻す
    copy2;
    #FH = hidemaruhandle( 0 );
    openfile "/h";
    #TmpFH = hidemaruhandle( 0 );
    paste;
    replaceallfast $AStr, $BStr;
    selectall;
    copy;
    setactivehidemaru #FH;
    closehidemaruforced #TmpFH;
    paste;

    setsearch $SearchBuf, #SearchOpt;   // 検索条件復帰
    enabledraw;
LEND:
    endmacro;
// マクロ(ここまで)

[ ]
RE:09177 一行の中での置換No.09179
kendo さん 01/06/30 00:33
 
ありがとうございました。実際にできました。
>>
>以下のマクロで、範囲選択した場所のみを置換することが出来ます。
>やっていることは、範囲選択した場所を別の秀丸へ貼り付け、そこ
>で全置換を行い、元に戻しているだけです。
 ファイルも小さめでうれしいです。


[ ]