秀丸で文章書いてて、選択した部分を一発でMarkdownのコードブロック(“`)で囲みたいときあるだろ。
このマクロ入れとくと、ブログ記事(WordPressにコピペ)を書くときがめちゃ楽になる。
これで何ができる?
✅ できること
- 選択範囲がある状態で実行
→ 選択したテキストを```言語と```で囲む(言語は入力) - 選択範囲がない状態で実行
→ 空のコードブロックを挿入して、中の空行にカーソルを移動(すぐ書ける)
✅ こんな用途に刺さる
- 技術記事で「ここからコード」ってところを素早く整形
- コマンドやログを囲むのが面倒なとき
- “ちょい長い説明” と “コード” を交互に書く記事
導入手順(コピペでOK)
1) マクロファイルを作る
- メモ帳でも秀丸でもいいから、新規ファイルを作成
- ファイル名を
md_codeblock_wrap.macにする - 下のコードをそのまま貼って保存
マクロ本体(これを保存)
/*
md_codeblock_wrap.mac
- 選択範囲: ```lang ... ``` で囲む
- 未選択: 空のコードブロックを挿入して中へ移動
*/
// 言語指定(空なら言語なし)
$lang = input("コードブロックの言語(例: python / bash / js。空でなし)", "");
// 開始フェンス(``` + lang)
$fence = "```";
if ($lang != "") {
$fence = $fence + $lang;
}
// 未選択なら空ブロック挿入して中へ
if (selecting == 0) {
insert $fence + "\n\n```\n";
up 2; // 中の空行へ
endmacro;
}
// 選択範囲を退避(選択は維持)
#sx = seltopx;
#sy = seltopy;
$text = gettext(#sx, #sy, selendx, selendy, 1);
// 選択範囲を削除(Delと同じ動作=選択中なら範囲ごと消える)
delete;
// 念のため開始位置へ
moveto #sx, #sy;
// 開始フェンス
insert $fence + "\n";
// 本文:末尾が改行じゃなければ足す
if (rightstr($text, 2) == "\r\n") {
// OK
} else if (rightstr($text, 1) == "\n") {
// OK
} else {
$text = $text + "\n";
}
insert $text;
// 終了フェンス
insert "```\n";
2) 秀丸に登録する
- 秀丸のメニューで [マクロ] → [マクロ登録]
- 空いてる番号にこの
.macを登録 - ついでに [キー割り当て] でショートカット割り当てしとけ(例:
Ctrl + Shift + K)
使い方
パターンA:選択して実行(記事で一番使う)
- 囲みたい範囲をドラッグして選択
- マクロ実行
- 言語を聞かれるので入力(例:
python/bash/txt/ 空でもOK)
例(選択したテキスト)
ipconfig /all
実行後(記事に貼るとこうなる)
ipconfig /all
パターンB:未選択で実行(これも地味に便利)
- カーソル置く
- マクロ実行
- 空のコードブロックが出て、中にカーソルが入る
こうなる:
あとは中にコード書ける。
カスタム:毎回言語聞かれるのがダルい場合
デフォルト言語を入れとく
この行を:
$lang = input("コードブロックの言語(例: python / bash / js。空でなし)", "");
こう変える(例:bashをデフォルト):
$lang = input("コードブロックの言語(例: python / bash / js。空でなし)", "bash");
空で確定すれば「言語なし」にもできる。
よくあるハマりどころ(先に潰しとく)
Q1. 間違って消えた気がする
A. マクロ内で 選択範囲は一旦 delete して、囲んだ形で入れ直す。
でも秀丸は普通に Undo(元に戻す) できるから安心しろ。
Q2. 改行が変になる
A. 末尾に改行が無いときは、マクロが自動で改行を足す仕様にしてある。
コードブロックは「閉じ “` が次行に来る」ほうが崩れにくいから、これが正解。
この記事の締め(ブログ向け)
秀丸は「編集の速さ」が武器だ。
マクロ一つ入れるだけで、ブログ用の整形作業が“手作業”から“ワンキー”になる。
こういう小さい時短が積み重なると、投稿ペースが上がって結果的に強い。

コメント