「矩形選択範囲の各行先頭に文字挿入」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
URLの修正
MSY-07 (トーク | 投稿記録)
ソースコードを修正
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
この機能は[https://www.haijin-boys.com/software/mery/mery-3-0-0#15 Ver 3.0.0]でMery本体に実装されたため、それ以降のバージョンを使用しているユーザーはこのマクロを導入する必要はありません。
このマクロは[https://www.haijin-boys.com/software/mery/mery-3-0-0#15 Mery Ver 3.0.0]で追加された「矩形選択における文字の入力・削除を各行に対して操作する」と同機能です。


== 概要 ==
== 概要 ==
14行目: 14行目:


== ソースコード ==
== ソースコード ==
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript" copy>
#title = "矩形選択範囲の各行先頭に文字挿入"
#title = "矩形選択範囲の各行先頭に文字挿入"


// ステータスバー初期化
// ステータスバー初期化
Status = ""
Status = "";


// 矩形選択判定
// 矩形選択判定
var s = Document.Selection;
var s = document.selection;
var isBoxed = (s.GetBottomPointY(mePosView) - s.GetTopPointY(mePosView)) != (s.Text.match(/\n/g) || []).length;
var isBoxed = (s.GetBottomPointY(mePosView) - s.GetTopPointY(mePosView)) != (s.Text.match(/\n/g) || []).length;


if (isBoxed) {
if (isBoxed) {
  var Ptr = "^" ;
var Ptr = "^";
  var Rep = window.prompt("挿入する文字列", "").replace(/\\/g, "\\\\");
var Rep = Prompt("挿入する文字列", "").replace(/\\/g, "\\\\");
  // 挿入文字が空ではない場合のみ、置換実行
// 挿入文字が空ではない場合のみ、置換実行
  if (Rep) {
if (Rep) {
    document.selection.Replace(Ptr, Rep, meFindReplaceRegExp + meReplaceSelOnly + meReplaceAll);
document.selection.Replace(Ptr, Rep, meFindReplaceRegExp + meReplaceSelOnly + meReplaceAll);
    Editor.ActiveDocument.HighlightFind = false;
editor.ActiveDocument.HighlightFind = false;
  }
}
} else {
} else {
  Status = "矩形選択がされていません。"
Status = "矩形選択がされていません。";
}
}
</syntaxhighlight>
</syntaxhighlight>

2026年9月10日 (木) 06:06時点における最新版

このマクロはMery Ver 3.0.0で追加された「矩形選択における文字の入力・削除を各行に対して操作する」と同機能です。

概要[編集]

  • 矩形選択後にこのマクロを実行すると、矩形選択範囲の各行先頭に文字挿入をすることができます。
  • つまりサクラエディタで言うところの、Alt + 上下矢印キー入力後に文字入力を行うような動作を実現できます。
  • ショートカットキーに割り当てて使うと便利です。私は Ctrl + I に割り当てています。

注意事項[編集]

Mery Ver 2.6.7 現在、矩形選択時の置換バグにより、余計な半角スペースが入ることがあります。

https://www.haijin-boys.com/discussions/3548

しかし発生条件的に、そこそこのレアケースだと思いますので、大概は問題なく動きます。

ソースコード[編集]

#title = "矩形選択範囲の各行先頭に文字挿入"

// ステータスバー初期化
Status = "";

// 矩形選択判定
var s = document.selection;
var isBoxed = (s.GetBottomPointY(mePosView) - s.GetTopPointY(mePosView)) != (s.Text.match(/\n/g) || []).length;

if (isBoxed) {
	var Ptr = "^";
	var Rep = Prompt("挿入する文字列", "").replace(/\\/g, "\\\\");
	// 挿入文字が空ではない場合のみ、置換実行
	if (Rep) {
		document.selection.Replace(Ptr, Rep, meFindReplaceRegExp + meReplaceSelOnly + meReplaceAll);
		editor.ActiveDocument.HighlightFind = false;
	}
} else {
	Status = "矩形選択がされていません。";
}
スポンサーリンク