列の挿入についてNo.09708
styth さん 21/12/20 09:01
 
 手動で、ある列に対して、列選択して、tabキーを押しました。
 列の挿入は出来ます。

 この操作をマクロでしたいので、マクロの記録をしました。
 記録されたマクロは、

 setcompatiblemode 0x0F;
 filter "" , "Indent";

 でした。

 マクロの記録後の画面は、A列に空列が挿入されます。
 任意の列に、空列を挿入したいのですが、上記マクロを実行しても、列の挿入は出
来ませんでした。
 マクロでどう書けば良いんでしょうか?

 filter "" , "Indent";
 を
 tab;
 にしても、同じでした。

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

[ ]
RE:09708 列の挿入についてNo.09709
秀丸担当 さん 21/12/20 11:27
 
TSVモードでの列の選択時でのタブ挿入は、マクロでは表せない特殊な動作になって
いました。
マクロでも表せる操作にするとしたら、「複数選択化」してから左キーで先頭だけの
幅ゼロにして、そこに複数の入力とするとできました。

例:
setcompatiblemode 0x0010000F;
selectcolumn;
tomultiselect;
left;
insert "\t";
escape;
endmacro;

TSVモードではないですが、BOX選択時の動作で、キー操作の記録できるものとできな
いものがあります。
[その他]→[動作環境]→[編集]→[高度な編集1]→[BOX選択中にキーを押すとその文
字を各行に挿入する]の設定によります。
TSVモードの列挿入は、「BOX選択のまま(矛盾が出る可能性あり,V8.81以前と同等)」
に似ていますが、これにも該当しない特殊な動作でした。
BOX選択時の挿入の記録では警告が出ますが、列挿入でも警告を出すか、「自動的に
複数選択に変換(幅ゼロ)」相当にできないか検討します。

[ ]
RE:09709 列の挿入についてNo.09710
styth さん 21/12/21 07:57
 
 ありがとうございます。できました。
 ところで、例示頂いたマクロを参考に、以下のマクロを実行しました。

setcompatiblemode 0x0012000F;
selectcolumn;
tomultiselect;
replaceallfast "(.*)", "\t\\1", regular, inselect2;

 こうしたら、列の前後に空列(\tだけの列)が挿入されました。

 TSVモードモードでなく、普通に文字列を1箇所、選択しておいて、

replaceallfast "(.*)", "a\\1", regular, inselect2;

 この1文を実行しても、選択文字列の前後にaが挿入されます。
 使い方が違っていたら、ご指摘、下さい。

[ ]
RE:09710 列の挿入についてNo.09711
秀丸担当 さん 21/12/21 11:57
 
"(.*)"の場合だと、0文字にもヒットしてしまうので、そうなってしまうようでした。
"(.+)"にするといいと思います。

[ ]