Skip to content

v1.12.5 — 一致行の、前後も出す

Choose a tag to compare

@MR-TABATA MR-TABATA released this 22 Aug 13:20
· 28 commits to main since this release
6c7a84e

絞り込むと、一致行しか残りません。でも調査は往復します。何が起きたかは、たいてい直前の行にあります。

これまでは、そこでフィルタを解除して、行番号を頼りに元の位置へ戻るしかありませんでした。絞り込んだ瞬間に文脈を失う道具だったということです。

一致行の、前後も出す

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+)。