0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

行の二重化+ マクロ

Last updated at Posted at 2020-06-13

改行単位で複数行もまとめて複製するマクロです。
なぜか本体機能には折り返し単位しかないので……

**マクロコード** (duplicateLines.js)
duplicateLines.js
/**********************************************************
# 行の二重化+ マクロ
通常のは折り返し単位且つ1行のみなので、改行単位&複数行選択に対応。
**********************************************************/

var KEEP_SELECT = 1; //行選択状態の維持 => 複数行の連続複製用

//function put(msg){if(typeof(outp)=='undefined'){TraceOut('\r\n▼-- $t @['+ExpandParameter('$M').replace(/^.*?([^\\\/]+)$/m,'$1')+'] > $f --',1),outp=1} TraceOut((''+msg).replace(/^([\S])/gm,'\t$1'),0)}

//== メイン処理 ===========================================
function duplicateLines(){
	var txt=GetSelectedString(0), f=txt!='', row=ExpandParameter('$y')-0, len=1;
	if(f){row=LayoutToLogicLineNum(GetSelectLineFrom());//複数行選択?
		len=LayoutToLogicLineNum(GetSelectLineTo())-LayoutToLogicLineNum(GetSelectLineFrom())+1;
		if(LineColumnToIndex(GetSelectLineTo(),GetSelectColmTo())<2){len--}
	}
	if(row>GetLineCount(0)){return false} txt='';
	for(var i=0; i<len; i++){txt+=GetLineStr(row+i)}

	CommitUndoBuffer(); AddRefUndoBuffer(); AppendUndoBufferCursor(); SetDrawSwitch(0);
	MoveCursor(row+len,1,0); InsText(txt);
	var pos=ExpandParameter('$y')-0; MoveCursor(row+len,1,0);
	if(KEEP_SELECT){if(f && KEEP_SELECT){MoveCursor(pos,1,1)}}
	SetUndoBuffer(); SetDrawSwitch(1); ReDraw();

	return true;
}

if(Editor){duplicateLines()}
  • 折返し表示中でも改行単位で行を複製します。
  • 複数行選択時は選択範囲単位で複製します。1
    • デフォルトでは複製した行は選択状態になります。2
      KEEP_SELECT = 0にすると選択状態にならなくなります。

ぶっちゃけ、行選択&コピペでも良いようなマクロですが、選択範囲が適当で良い・クリップボードを汚さないので使い道はあるかも知れません。

  1. 各行ごとに二重化じゃないです

  2. 複数行を連続複製する為の措置です

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?