[ 新規に投稿する ]

replaceall と inselect についてNo.09724
おすぎ さん 22/01/21 10:00 [ コメントを投稿する ]
お世話になっております。

replaceall を実行後の result には、全置換個数が入ります。
replaceall に inselect を付けると、選択範囲(行単位)で全置換されます。
replaceall に inselect を付けて実行後の result には、
選択範囲での全置換個数が入るのでしょうか?

実行したところ、置換自体は選択範囲ですが、result にはファイル全体での置換個数が入るようです。

こちらの操作ミスだったら すみません。
[ ]
RE:09724 replaceall と inselect についてNo.09725
おすぎ さん 22/01/21 10:51 [ コメントを投稿する ]
すみません。
こちらの勘違いだったようです。

beginsel を使って範囲指定した後に、 
while 文で replaceall を複数回 行おうとしていました。
でもその間に、範囲指定は解除されてしまうようです。

範囲指定はすぐに消えてしまうんですね。

お騒がせしました。



[ ]
RE:09725 replaceall と inselect についてNo.09726
秀丸担当 さん 22/01/21 12:04 [ コメントを投稿する ]
  replaceallでinselectした後は選択は解除されるので、次のreplaceallでは選択が無いと全体になってしまいます。

特定の範囲を編集するには、幾つか方法があって、最近の秀丸エディタ本体のヘルプでは、
[目次]→[コマンド]→[検索系コマンド]→[いろいろな検索例]→[特定の範囲内だけで検索したい場合]
のところに幾つかの方法が書かれていいます。

これらを同等のマクロの文にするとマクロでもできます。
「選択した範囲」はinselectやinselect2
「部分編集」はrangeeditin〜rangeeditout
「追加の条件」はmaskonlyやincolormarker
といった感じです。

最近のバージョンでは「範囲内検索を選択」コマンドが追加されていて、inselectで書いたをそのまま使う場合、replaceallした後に「範囲内検索を選択」コマンドと同等のselectinselectを使って再び選択状態にすると、inselectを継続して使う方法ができます。

例:
replaceall "a","x",inselect;
selectinselect;
replaceall "b","y",inselect;
selectinselect;
replaceall "c","z",inselect;

[ ]
RE:09726 replaceall と inselect についてNo.09727
おすぎ さん 22/01/21 12:29 [ コメントを投稿する ]
  おぉ〜そうなのですか。
貴重な情報をありがとうございます。

一つ教えて下さい。
「範囲内検索を選択」コマンドを実行する仕方がよく分かりません。
検索ダイアログを出す前に行うようですが。。。
[ ]
RE:09727 replaceall と inselect についてNo.09728
秀丸担当 さん 22/01/21 14:28 [ コメントを投稿する ]
  「範囲内検索を選択」コマンドは、通常のメニューには無くて、[その他]→[キー割り当て...]で割り当てしたりする必要があります。
キー割り当ては検索系コマンドにあります。

割り当てなしでは、[その他]→[コマンド一覧...]→[検索系]の一番下から選ぶ方法もあります。
[ ]
RE:09728 replaceall と inselect についてNo.09730
おすぎ さん 22/01/21 15:24 [ コメントを投稿する ]
  ありがとうございました。
[ ]

[ 新規に投稿する ]