ブックマーク
戻ってきたい場所 — バグが住んでいる行、名前を変えかけている関数、リファクタリングが 着地したら消すもの。ファイルビューアーで行を右クリックして この行をブックマーク を選ぶと、サイドバーに現れ、クリックすればそこへ戻れます。

ブックマークされた行には行番号の脇に印が付き、どの行でもホバーすると薄い印が出て クリックできます — コンテキストメニューは、機能があると既に知っている人のためのものです。
ブックマークはこのマシンとこのリポジトリだけのものです。リポジトリには何も書かれ ないので、コミットもプッシュもできず、ほかの誰にも見えません — Todo と 同じです。
行は動きます。問題はそこに尽きます。
誰かが上に一行入れた瞬間 cart.ts:42 は腐りますし、黙って別の行を開くブックマークは
無いより悪い。だから行番号の隣にその行のテキストを保存し、開くときに探し直します:
- 覚えていた行。まだそのテキストなら、それ;
- なければ同じテキストを持つ最も近い行 — 最も近い、というのが肝で、ファイル中に 何度も出てくる行でも元の位置に一番近い写しに解決されます;
- それでもなければ、空白を無視して一致する最も近い行。インデント変更や フォーマッターを生き延びます;
- どれも無ければ その行はもう無い と言い、推測せずに元あった場所を開きます。
動いた場合、ブックマークは自分で治ります。新しい行番号が保存され、次に開くときは 実際の位置から始まります。メモはコンテキストメニューから付けられます — メモが 無ければ、その行のテキストがそのままラベルです。
限界
- ブックマークが指すのはワークツリーであって、コミットではありません。編集には ついていきますが、履歴をさかのぼりはしません。
- 書き直されたファイルはブックマークを失います。 数百行以内に正確なテキストも 空白を正規化した形も無ければ、指し示せる誠実な場所は残りません。
- ファイル名を変えるとブックマークは壊れます。 鍵はパスです。git は差分の中の リネームを見抜けますが、ブックマークは差分の一部ではありません。
- 空行には探す手がかりがありません。 そのブックマークは行番号だけが頼りです。