#5067

takuya
参加者

ちょうど同じような処理をしていたところなので、私の考えた選択肢をマクロにしてみました。

幾つか方法はあると思います。
0)マクロ無し
マクロ使わないなら、EmEditorでTab区切りCSV化しEXCELに貼付けてソートして削除が楽かと。

1) 正規表現を工夫するとか
正規表現なら置換ダイアログだけでOK。

document.selection.Replace( “.*abc.*”, “”, eeFindReplaceRegExp+eeReplaceAll );//*abc*を検索して空白に
document.selection.Replace( “^n”, “”, eeFindReplaceRegExp+eeReplaceAll );//空白行を削除

2)JavaScriptっぽくマクロ処理するなら

Redraw = false;
document.selection.SelectAll();
lines = document.selection.Text.split(/n/g);
for( i in lines){
if( lines.indexOf(“abc”) > -1 ){
lines.splice(i,2);
}
}
document.selection.Text = lines.join(“”);
document.selection.Collapse();
Redraw = true;

3)7.0版のみで動作させるマクロ、

この処理が早いと思う1行ずつ読み込んでいるから。

Redraw = false;
for(i=1;i -1){
document.selection.SetActivePoint( eePosLogical, 1,i,false );
document.selection.SelectLine();
document.selection.Delete();
i–;
}
}
Redraw = true;

追記1:
LineDown()は最終行を検出できないのでループで使うべきではないと判明。
追記2:
ダイアログを使った正規表現置換は画面の再描画があるので遅かった。

追記3:個人的にはDocumentオブジェクトでgrep処理 + rubyっぽいiterator処理が出来れば理想的です。

//EmEditorで開いてるファイルにGrep処理がしたい
document.grep( “abc” ).each(function(index,value){#行削除処理#});

コレは実装するのは大変ですが。個人的に作りかけだったりします。そのうち公開します。