|
どみにかと申します。
未熟者ながらコメントつけさせてもらいます。
範囲選択 → Ctrl+X(切取り) → 移動 → Ctrl+V(貼付け)
上記の手順では何らかの理由があって、
希望を満足できないってことですよね?
昔、似たような動きをするマクロを作ったことがありましたので、
流用してマクロを作ってみました。
このマクロを「Shift + Alt + Z」あたりに割り当てて使用すれば、
希望に近い動作をするのではないかと思います。
ダメですかね?
-------------------------------------------------------
#ESC = 0x1B; #ENTER = 0x0D;
#LEFT = 0x1C; #UP = 0x1D;
#RIGHT = 0x1E; #DOWN = 0x1F;
if(!selecting) endmacro; // 範囲選択されていない場合は終了
$$SelText = gettext(seltopx,seltopy,selendx,selendy); // 選択範囲文字列を取得
##SelLen = strlen($$SelText); // 選択範囲文字列長を取得
##StX = x; ##StY = y; // 開始位置の座標を取得
##SeltX = seltopx; ##SeltY = seltopy; // 選択開始位置の座標を取得
##SeleX = selendx; ##SeleY = selendy; // 選択終了位置の座標を取得
endsel; escape;
moveto ##SeltX, ##SeltY;
beginsel; moveto ##SeleX, ##SeleY;
while(1){
##InputKey = inputchar("移動モード(ENTER:決定, ESC:キャンセル)"); //
キー操作取得
##SeleX = selendx; ##SeleY = selendy; // 選択終了位置の座標を取得
delete; endsel; escape; // いったん削除
if(##InputKey == #ESC) { moveto ##SeltX, ##SeltY; // ESCが押され
た場合、元に戻して終了
insert $$SelText;
moveto ##StX, ##StY;
endmacro; }
else if(##InputKey == #ENTER) { insert $$SelText; // ENTERが押された場
合、確定して終了
moveto ##SeleX, ##SeleY;
endmacro; }
else if(##InputKey == #UP) { up; } // "↑"を押された場合
else if(##InputKey == #DOWN) { down; } // "↓"を押された場合
else if(##InputKey == #LEFT) { left; } // "←"を押された場合
else if(##InputKey == #RIGHT) { right; } // "→"を押された場合
else { continue; } // 上記以外をを押された
場合はリトライ
##NowX = x; ##NowY = y; // 現在位置の座標を取得
insert $$SelText;
##SeleX = x; ##SeleY = y; // 選択終了位置の座標を取得
beginsel; moveto ##NowX, ##NowY;
}
-------------------------------------------------------
|
|