文字の置換えについてNo.14798
どんぶり勘定 さん 03/06/12 09:29
 
こんにちは お世話になります。

  文字の置換えをする時に、たまに不幸なメにあってしまうので
何か良い方法が在ればご教示頂けるとうれしいです。

  意図しない箇所を変更しない為に、置換えを行う時には必ず範囲指定
してから実行するクセをつけています。
  「置換」のwindowの「選択した範囲のみ」にチェックを入れるのですが、
複数行を選択した場合は、チェックが残っているのですが、一行を選択す
るとチェックがはずれているので、たまに a -> b なんて変更を そのまま
ファイル全体で置換えしてしまい、「あ゛ー」という雄叫びと共に涙ぐんで
しまう事があります。

  一行選択時にチェックが外れるのは意図があっての事なのでしょうか?
  うまく行う方法はないものでしょうか? 私がズボラなだけでしょうか?(笑)

[ ]
RE:14798 文字の置換えについてNo.14799
ENCODINGSHIFTJIS さん 03/06/12 10:47
 
もう一つの方法は、
置換ダイアログの
置換の前に確認(K) をonにして
下検索、全置換などです。スキップもできます。
確認ダイアログが目障りかもしれないが

[ ]
RE:14799 文字の置換えについてNo.14800
ENCODINGSHIFTJIS さん 03/06/12 10:54
 
確かに 改行マークを2個、選択範囲内に置かないとダメですね、
今のところは、前行の改行と現在行の改行、
を含ませる操作とか、が必要、うー。

[ ]
RE:14800 文字の置換えについてNo.14806
秀丸担当 さん 03/06/12 18:59
 
>確かに 改行マークを2個、選択範囲内に置かないとダメですね、
>今のところは、前行の改行と現在行の改行、
>を含ませる操作とか、が必要、うー。

この動作は、範囲選択した部分を検索文字列の取得として扱うかどうかという微
妙な問題があり、以前にも問題になったことがありますが、現在はこの仕様にな
っています。
改行は2個なくても、改行1個+1文字あれば、選択した範囲のみになります。

改行が1個でもあったら選択した範囲のみにしてもいいような気がしますが、そ
うすると「行選択」→「置換」で検索文字列の取得ができなくなって苦情が来る
気もします。

[ ]
RE:14806 文字の置換えについてNo.14810
どんぶり勘定 さん 03/06/12 20:17
 
> 改行が1個でもあったら選択した範囲のみにしてもいいような気がしますが、そ
> うすると「行選択」→「置換」で検索文字列の取得ができなくなって苦情が来る
> 気もします。

  これをお願いしてみようかと、しばらく私も考えていたんですが、お書きに
なったような使い方をする方もおられると思いますので、
      心静めてゆっくり確実に作業する & もしもの時の為のまめなsave
としたいと思います。ありがとうございました。

[ ]
RE:14810 全置換を元に戻すNo.14822
ひろ さん 03/06/14 17:26
 
 どんぶり勘定さん今日は、ひろです。
 「選択した範囲内のみ」については、もう結論がでているので、最初の
>   「置換」のwindowの「選択した範囲のみ」にチェックを入れるのですが、
> 複数行を選択した場合は、チェックが残っているのですが、一行を選択す
> るとチェックがはずれているので、たまに a -> b なんて変更を そのまま
> ファイル全体で置換えしてしまい、「あ゛ー」という雄叫びと共に涙ぐんで
> しまう事があります。
について視点を変えてみました。
 これについては、以前から要望に上がっているアンドゥの強化版「一括置換
戻し」
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x01681.html#1700
が実現されればよいと思うのですが、現状では末尾のマクロでそこそこ代用で
きると思いますが、如何でしょう。
 何か不備や、「こうすればもっと確実にできる」という方法をご存じの方が
いらっしゃれば、ご指摘ください。→All
//一括置換を元に戻す macro
//実際に undo を遣ってみて、cursor 位置に検索語が有るかで終了判定
//→その為正規表現で「[a-z]+」を検索語にしていると、殆ど意味が
//無い (特に欧文) などの問題がある
//「選択した範囲内のみ」の場合は、``「選択した範囲のみ」で動作中の
//範囲を中間色で表示'' が ON でないと上手くいかない
if(searchbuffer == "")endmacro;
undo;
if( !result )goto Error;
#s = searchoption;
setsearch searchbuffer, #s&251;
#select = colorcode & 0x100;
#by = 10000000;
while(1){
  #x = x;
  #y = y;
  finddown2;
  if( #by < y || ((#x != x || #y != y)
    && (!(#select&colorcode&0x100)))){
    redo;
    break;
  }
  undo;
  if( !result )goto Error;
  #by = y;
}
setsearch searchbuffer, #s;
endmacro;

Error:
  if(updated)message "Undo buffer is not enough!";

[ ]
RE:14810 文字の置換えについてNo.14823
山紫水明 さん 03/06/15 11:20
 
 どんぶり勘定さん,こんにちは。

》      心静めてゆっくり確実に作業する & もしもの時の為のまめなsave
》としたいと思います。

 選択範囲の保存と置換の取り消しについては,置換そのものをマクロでやれば
可能かも知れません。ライブラリにある拙作マクロではそれをやってみました。
 よろしければお試しください。
http://hide.maruo.co.jp/lib/macro/replace28.html

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

[ ]
RE:14823 文字の置換えについてNo.14891
どんぶり勘定 さん 03/06/21 20:51
 
山紫水明さん、ひろさん、こんにちは。どんぶり勘定です

  お返事が遅れましたが、お二方に教えて頂いた方法で ばっちり
解決です。ありがとうございました。

 秀丸は、文章書きに使う事が多いのですが、たまにプログラム書き
をした時についやってしまう事があるので、これでとても助かります。

[ ]