マクロで複数行のコピーNo.27271
cent さん 09/11/11 08:28
 
お世話になります。

マクロを実行して複数行をコピーする
方法を教えてください。

元のテキスト
(普通のテキストです特殊文字は含まれません。)
a123
b123
d234
e3456

マクロ実行後のテキスト
a123
b123
d234
e3456

a123z
b123z
d234z
e3456z

単純に1つのテキストのブロックをコピーして
2つのブロックにします。
2つ目のブロックの各行末にzを加えます。

よろしくお願いいたします。

[ ]
RE:27271 マクロで複数行のコピーNo.27273
秀丸担当 さん 09/11/11 10:51
 

>単純に1つのテキストのブロックをコピーして
>2つのブロックにします。
>2つ目のブロックの各行末にzを加えます。

キー操作の記録と再生でマクロ化するとできそうです。

標準のキー割り当てだとすると以下の操作でできると思います。
1.Shift+F1(キー操作の記録開始)
2.Ctrl+A(すべて選択)
3.Ctrl+C(コピー)
4.[検索(S)]→[置換(R)]
5.検索文字列「$」
  置換文字列「z」
  正規表現のみON
6.「全置換」
7.Ctrl+Home(ファイルの先頭)
8.Shift+Enter(空行挿入)
9.Ctrl+V(貼り付け)
10.Shift+F1(キー操作の記録終了)

記録ができたら、次からはShift+F2のキー操作の再生で同じ操作ができます。
[マクロ(M)]→[キー操作の保存(S)...]で記録した操作をマクロとして保存する
こともできます。

検索/置換ダイアログの「正規表現」はチェックしたものが記憶されてしまうの
で、正規表現を必要としない通常の検索では手動でOFFにする必要がある場合が
あるので注意が必要かもしれません。

マクロで「正規表現」などの検索オプションが書き換わらないようにするとした
ら、「キー操作の保存」で保存したマクロを以下のように修正するといいと思い
ます。

setcompatiblemode 0x0F;
$s=searchbuffer;  //追加
$r=replacebuffer; //追加
#f=searchoption;  //追加
selectall;
copy;
begingroupundo;
replaceall "$" , "z" , regular, nocasesense;
if( ! result )  beep;
endgroupundo 1;
gofiletop;
insertline;
paste;
setsearch $s,#f;  //追加
setreplace $r;    //追加

[ ]