|
こんにちは TAKAさん、安久津といいます。
#引用部分空白挿入。
>// 私は、次のように2回手順を踏むしか方法がないような気がしてい
>// るのですが、1回で出来ないものでしょうか?
処理済部分と未処理部分にずれが生じてしまうので、無理でしょう。
>replaceallfast ".+\\f\\n", "\\0", regular, inselect;
>// ここで、必要な変換範囲を選択する。
>// 変換範囲は置換数と、最初の変換対象のエディタ行数などから容
>// 易に求めることが出来ています。
>replaceallfast "\\n", "\\n\\n", regular, inselect;
この方法は、連続する空行が元データにあると、余計な空行を作ります。
1回での処理よりも、むしろこちらの方を問題視して発言されたのだと推測します。
#はずしているかな。(^^;)
// ---------------------------------------------------------------
disabledraw;
if( ! selecting ) selectall;
##top = seltopy; ##end = selendy;
escape;
moveto 0, ##top; golinetop2; ##top = lineno;
beginsel;
moveto 0, ##end; golineend2; ##end = lineno;
// 本処理
replaceallfast ".\\f\\n\\f.", "\\0\\2", regular, inselect;
##crlf = result;
while( ##crlf ){
##end = ##end - ##crlf;
movetolineno 1, ##top; beginsel; movetolineno 1, ##end;
replaceallfast ".\\f\\n\\f.", "\\0\\2", regular, inselect;
##crlf = result;
}
endmacro;
// ---------------------------------------------------------------
改行の数が減る置換をする場合、その減る数を ##d とすると。
// 例 ##d = -1
##crlf = ##d * result;
##end = ##end + ##crlf;
で汎用的になります。
参考。連続する空行を1つの空行にまとめる。
##d = -1; // 1度の置換で改行が1個減る。
replaceallfast "^\\n\\n", "\\n", regular, inselect;
##crlf = ##d * result;
while( ##crlf ){
##end = ##end + ##crlf;
movetolineno 1, ##top; beginsel; movetolineno 1, ##end;
replaceallfast "^\\n\\n", "\\n", regular, inselect;
##crlf = ##d * result;
}
では。
|
|