|
replaceallでinselectを使う場合は行単位になるということと、複数行は検索バッフ
ァに収まるかどうかわからないということもあるので、カーソルを範囲選択の先頭と
最後に移動して【】を挿入するほうが現実的になりそうです。
以下のようなマクロで一応できると思います。
setcompatiblemode 0x20000;
if( selecting != false && rectselecting == false ) {
#line1=seltoplineno;
#col1=seltopcolumn;
#line2=selendlineno;
#col2=selendcolumn;
escape;
moveto2 #col1,#line1;
insert "【";
if( #line1 == #line2 ) {
#col2 = #col2 + 2;
}
moveto2 #col2,#line2;
insert "】";
#col2 = #col2 + 2;
if( #line2 > #line1 ) {
moveto2 1,#line2;
beginsel;
moveto2 1,#line1;
endsel;
replaceall "\\n", "",regular,inselect;
moveto2 #col1,#line1;
}
}
--------
ちなみにinselectの置換を使う場合は、行単位になるということと、最後の行の改行
も含まれるので、改行の扱いが面倒になります。
改行を扱う場合、今回は使ってないですが、部分編集(rangeeditin/rangeeditout)
を使ったほうがいい場合があります。
あと、参考までの情報として、範囲選択を文字単位で置換する場合は、カラーマー
カーを使う方法があります。
例えば範囲選択を文字単位で"a"を"b"に置換するマクロは以下のような感じになりま
す。
setcompatiblemode 0x20000;
disabledraw;
deletecolormarkerall;
colormarker -1,-1,0,0,0;
settargetcolormarker "";
replaceallfast "a", "b", incolormarker;
deletecolormarkerall;
endmacro;
|
|