一括置換の性能は「何件変えられたか」ではなく、「変えるべき三件だけを変え、残す二件を説明できるか」で決まります。テキストエディタ 一括置換では、置換ボタンを押す前に一致一件ずつをEDIT、KEEP、ARCHIVEに分けます。実測はOld318という固定語の五件を使いました。
フォルダの外にある一件が範囲漏れを教える
作業全体を検索すると四ファイルに五件、置換対象フォルダだけなら三ファイルに四件ありました。外のarchive.mdにある一件は古い記録で、変更しないARCHIVEです。この一件が残ることは失敗ではなく、対象範囲を守った証拠になります。
対象フォルダ内の四件も、すべて置換しません。三件は表記改訂のEDIT、残る一件は引用文中のKEEPです。検索結果にファイル名、行番号、前後文を付け、分類者と理由を一行ずつ書きます。
最初の一件をカナリアにする
三件を一度に変えず、まず一件だけの変更予定を出し、対象パスと置換後文を読みます。これがカナリアです。予行結果が表の一行と一致したらその一件を適用し、保存後に新表記が一件増え、旧表記が一件減ったことを再読込します。
カナリアが合格した後だけ、残るEDIT二件を同じ手順で変えます。実測はcanary=1、remaining=2でした。この段階的な進め方により、置換式や範囲が間違っていたときの被害を一件で止められます。
成功は「旧語0件」ではない
置換後に対象フォルダを逆検索すると、Old318は引用文のKEEP一件だけ残りました。作業全体の逆検索では、さらにARCHIVE一件が残ります。したがって受入値はold inside=1、old outside=1です。二件の残存理由を表に戻せれば、三件の置換と同じく重要な成功証拠になります。
検索語の意味はツールが決められません。引用か、史料か、書名か、改訂対象かは、本文と制作方針を読んだ人が判定します。一致数は候補の所在を教えますが、置換の許可件数ではありません。
KEEPを変えたら予行前の複製へ戻る
失敗例は、引用文中のKEEPまで新表記へ変えることです。この場合はその一文だけを手で戻すのではなく、予行前の読み取り専用複製から新しい作業版を作ります。分類表のKEEP理由を確認し、カナリア一件からやり直します。
復旧版は別パスと別SHAにし、失敗版を残します。そうすれば、どの一致が誤って変わったかと、復旧後に三件のEDITだけが変わったかを比較できます。
この試験が証明しないこと
今回の記録は、五件の一致を分類し、対象内の三件だけを段階的に置換した結果です。UI通知の見た目、すべての正規表現エンジンの仕様、未保存バッファの振る舞いは測っていません。流用できるのは、範囲を固定し、一件で予行し、逆検索で意図的な残存を確認する判定方法です。
最終合格は、新表記がEDIT三件にあり、Old318がKEEPとARCHIVEに一件ずつ残ることです。五行すべてを分類表へ戻せるとき、安全な一括置換と判定できます。
正規表現を使う前に固定文字列で受入票を通す
Old318の固定文字列は、範囲と分類の手順を確かめるための最小標本です。本番の表記ゆれを正規表現でまとめる前に、固定語で五行の受入票を通します。エスケープや単語境界を誤っても、一件カナリアの予行で止められるからです。
正規表現版の表には、一致した全文字列とキャプチャ値を追加します。予行結果で同じ行が二回出たら、適用せずパターンを修正します。本番で複雑な式を使うことと、その式を一度に全件へ適用することは別です。
引き渡し時に五行の差分をそのまま渡す
完了記録には、作業前と作業後の五行を並べます。EDIT三行は旧語から新語へ、KEEPとARCHIVEの二行は同じ文のままです。ファイル単位のSHAも付け、差分表が別版の内容を指していないかを確かめます。
別担当者は変更後フォルダを検索し、三変更・一保持を記録し、その後に全体検索でアーカイブ一件を確かめます。一度の成功通知より、五行すべての最終状態を説明できることが強い受入条件です。
未保存タブを範囲表へ混ぜない
検索時にディスク上のファイルと未保存タブのどちらを読んでいるかが曖昧だと、同じパスでも件数が変わります。作業開始前に対象三ファイルを保存して閉じ、再読込した内容から四件を取得します。編集中の変更を残す必要がある場合は、別名の退避ファイルへ保存し、置換対象の一覧には入れません。
失敗例は、未保存タブではOld318を削除済みなのに、ディスク検索では一件残る状態です。ここで数を合わせるためにもう一度置換すると、保存時に別の編集を失うおそれがあります。復旧ではタブの内容とディスク版を差分比較し、採用する版を決めて一度だけ保存します。その版のSHAを起点に、四件の分類とカナリアから再実行します。
ファイル名変更後も分類行を追跡する
作業途中でファイルを移動または改名すると、行番号とパスだけの受入票は古くなります。各行にはOld318を含む前後文の短い識別子を持たせ、移動後の検索結果へ再対応させます。識別子が二箇所に重複したら、自動的に一件へ決めず、段落見出しや隣接文を追加して人が確認します。
改名後に対象フォルダから外れたファイルは、勝手にARCHIVEへ変えません。範囲変更として新しい承認を得て、開始件数を取り直します。今回の五件、三変更、二保持という実測値は固定標本の範囲にだけ有効です。範囲と入力版を固定したうえで全五行を再読込できることが、事故を防ぐ置換の最終条件です。