テキストの改行コードが混在すると、地味に地獄を見る。
- Gitの差分が無駄に汚れる
- コピペ先で表示が崩れる
- ツールが「別ファイル扱い」してくる
- 末尾の改行が無いせいで、結合や処理がコケることがある
だから 「改行を統一」+「最終行改行を揃える」 をワン発でやる秀丸マクロを用意しとく。
これで何ができる?
このマクロは次をまとめて実行する。
- CRLF/LF/CR 混在 → 指定方式に統一(CRLF または LF)
- ファイル末尾の改行を「あり/なし」で揃える
- まとめて1回でUndoできる(やり直しがラク)
使いどころ(目安)
- Windows中心 → だいたい CRLF が無難
- Git/WSL/Linux系のツール中心 → LF が無難
- 末尾改行は、迷ったら あり(多くのツールが前提にしてる)
マクロ本体(コピペで使える)
ファイル名:nl_normalize.mac
/*
nl_normalize.mac
改行正規化:
- CRLF/LF/CR 混在を統一(CRLF or LF)
- ファイル末尾の改行:あり/なし を揃える
- まとめて1回Undo
注意:
- このマクロは「ファイル全体」を対象にする(改行はファイル属性みたいなもんだから)
*/
#style = val(input("改行を統一する: 0=CRLF(Windows向け) / 1=LF(Git/WSL向け)", "0"));
#final = val(input("最終行の改行: 0=なし / 1=あり(推奨)", "1"));
$CR = char(13);
$LF = char(10);
$CRLF = $CR + $LF;
$NL = $CRLF;
if (#style == 1) {
$NL = $LF;
}
// カーソル位置を退避
#cx = x;
#cy = y;
begingroupundo;
//====================================================
// 1) すべての改行を統一(\n はどの改行にもマッチする前提)
//====================================================
replaceallfast "\n", $NL;
//====================================================
// 2) ファイル末尾の改行を「全部削除」→必要なら「1個だけ付ける」
//====================================================
gofileend;
// 末尾にある CR/LF を全部剥がす
while (1) {
#x0 = x; #y0 = y;
left;
// もう左に動けない=先頭付近
if (x == #x0 && y == #y0) break;
#u = unicode;
// LF(10) or CR(13) なら削除して続行
if (#u == 10 || #u == 13) {
beginsel;
right;
delete;
gofileend;
} else {
// 改行じゃないなら元に戻して終了
right;
break;
}
}
// 「最終行改行あり」なら 1個だけ付ける
if (#final == 1) {
gofileend;
insert $NL;
}
endgroupundo;
// カーソル位置を戻す(行数が変わったら多少ズレるのは勘弁な)
moveto #cx, #cy;
message "改行正規化 完了";
endmacro;
導入手順(3分で終わる)
1) マクロを保存
- 秀丸で新規ファイルを開く
- 上のマクロを貼り付ける
nl_normalize.macという名前で保存
2) マクロ登録
- [マクロ] → [マクロ登録]
- 空いてる番号を選ぶ
nl_normalize.macを指定して登録
3) キー割り当て(おすすめ)
- [その他] → [キー割り当て]
- 登録したマクロにキーを割り当て
- 例:
Ctrl + Shift + N(N = newline)
使い方
マクロ実行すると2回聞かれる。
1) 改行方式
0= CRLF1= LF
2) 最終行改行
0= なし1= あり(推奨)
終わり。ファイル全体が「統一状態」になる。
よくある注意(事故りやすいポイント)
1) 「¥」になってたら動かないことがある
マクロ内の \n の \ は、見た目が ¥ に見える環境がある。
コピペで基本OKだが、もし置換が効かないなら バックスラッシュが別文字になってないか疑え。
2) 大きいファイルに使うならまず保存
置換系は一発で変わる。Undoできる設計にはしてるが、念のため保存してから叩け。
まとめ
改行が混ざると、あとで必ず面倒になる。
だから「気づいた時に一発で直せる」状態を作るのが勝ち。
このマクロをショートカットに入れとけ。地味だけど、効く。

コメント