v1.12.5 — 一致行の、前後も出す
絞り込むと、一致行しか残りません。でも調査は往復します。何が起きたかは、たいてい直前の行にあります。
これまでは、そこでフィルタを解除して、行番号を頼りに元の位置へ戻るしかありませんでした。絞り込んだ瞬間に文脈を失う道具だったということです。
一致行の、前後も出す
grep -C と同じことを、絞り込んだ画面の上で伸び縮みさせられます。
1481 │ INFO opening connection to db-03
1482 │ WARN pool exhausted, waiting
1483 │ ERROR connection reset by peer ← 一致行
1484 │ INFO retrying in 500ms
1485 │ ERROR connection reset by peer ← 一致行
入口は 2 つです。
- 検索バーの
±欄に行数を打つ - ⌥⌘] で 1 行広げる、⌥⌘[ で 1 行縮める
ボタンでもアイコンでもなく、文字と数字にしました。絞り込んだ画面に「±2」と出ていれば、いま何を見せられているのかがそこで読めます。記号だけの切り替えは、気づかれません。
打った値はアプリの設定として覚えます(上限 100 行)。次に開いたファイルでも同じ見え方になります。
決めたこと
- 窓が重なっても、行は重複しません。 一致が隣り合っていれば 1 本に繋がります。
- 区切り線は入れません。 行番号のガターに元の行番号がそのまま出ているので、飛んでいることはそこで分かります(
grepの--に当たるものは要りません)。 - いまの一致行に帯を敷きます。 文脈行と一致行が同じ見た目で並ぶと、どれが引っかかった行か分からなくなるためです(構造化表示中は行内のハイライトが出せないので、帯だけが手がかりになります)。
- 件数は一致行の数のままです。 「18 件中 1 件目」に文脈行は混ざりません。
- 時間分布のドラッグで絞ったときは、足しません。 選んだ時間帯の外の行が混ざると、「選んだ範囲」が嘘になるからです。
画面に出して、初めて分かったこと
テストは緑のままでしたが、配布するものと同じ .app で触って 3 つ見つけて直しました。
| 出たこと | 直し |
|---|---|
構造化表示中、文脈行だけが con… と潰れた |
列幅を一致行だけで測っていた。文脈行も同じ表に並ぶので、表示している行から測る |
| 「18 件中 1 件目」の末尾が切れて何件目か読めない | 詰まったときに縮むのは検索欄だけにした(打った語は自分で覚えている) |
| 出したはずの直前の行が画面の上に隠れる | 一致行を最上部に置いていた。前後を出しているぶんだけ上へ寄せる |
確認したこと
配布するものと同じ .app で、4 経路とも通しています。
| 条件 | 結果 |
|---|---|
| 小さいファイル(編集ペイン) | ± 欄・キーボードとも効く |
| 10GB・8642 万行、1 件に ±3 | 7 行が 0.1 秒未満で出る |
| 12.8MB・900,001 行の CSV、構造化+フィルタ+前後行 | 桁を保ったまま前後が出る |
| ⌥⌘] / ⌥⌘[ | 1 行ずつ伸び縮みする |
641 のテストが緑。Apple Developer ID で署名し、公証を通しています——ダブルクリックで開きます(Apple Silicon / Intel 両対応・macOS 13+)。