Nawatobi
ファイルを編集したあと、過去のバージョンの行番号を基点に Go to Line する VS Code 拡張機能。
組み込みの Go to Line(Ctrl+G)は現在ファイルの生の行番号にしか飛ばない。
編集で行がズレると、過去のバージョンで見ていた行番号がそのままでは使えなくなる。
Nawatobi は git diff -U0 のハンクを解析して、基準行 → 現在行のマッピングを行う。
使い方
差分エディタ(Source Control の作業ツリー差分など)で Ctrl+G を押すと、Nawatobi の入力ボックスが開く。
括弧はその番号がどちらのファイルの座標かを指す(< = 過去/左側、> = 現在/右側)。飛び先は常に現在(作業ツリー)。
| 入力 |
意味 |
123 / >123 |
番号は現在ファイルの座標 → そのまま 123 行目へ。123:5 で列指定も可(組み込みと同じ) |
<123 |
番号は過去(基準)ファイルの座標 → 現在の作業ツリー行へ写像してジャンプ |
<HEAD~2:123 |
基準を HEAD~2 にして写像(< の後に <ref>:<行>) |
<a1b2c3d:123 |
基準を任意コミット SHA にして写像 |
先頭の : は無視されるので :<123 でも <123 でも同じ。
基準(baseline)の決まり方
<123(ref 未指定)のとき:
- そのファイルの スナップショットがあればそれ
- なければ
HEAD
未コミットの状態を基点にしたい場合は、その時点で
Nawatobi: Snapshot current file as baseline(コマンドパレット)を実行して現在の中身を基準として記録する。
以降 <123 はそのスナップショットを基準に写像し続ける。解除は Nawatobi: Clear baseline snapshot。
スナップショットはウィンドウを閉じるまでのメモリ内保持。
近似ジャンプ
対象行が「変更・削除・挿入された領域の中」に落ちた場合は、対応するハンクの先頭行にジャンプし、
ステータスバーに ⚠ 近似 と表示する。
キーバインド
| キー |
when |
動作 |
Ctrl+G |
isInDiffEditor && textInputFocus |
Nawatobi(差分エディタ内のみ組み込みを上書き) |
Ctrl+K Ctrl+G |
editorTextFocus |
Nawatobi(通常エディタでも呼べるフォールバック) |
通常エディタの Ctrl+G は組み込みのまま。もし差分エディタで上書きが効かない場合は
keybindings.json に以下を追加:
{ "key": "ctrl+g", "command": "-workbench.action.gotoLine", "when": "isInDiffEditor && textInputFocus" }
既知の制限(v0.1)
- 差分エディタの 左ペイン(変更前)にフォーカスがある状態 で実行すると、
写像先はファイルを通常エディタで開いて表示する(差分エディタ内には留まらない)。
右ペインにフォーカスしてから
Ctrl+G すると差分エディタ内で移動する。
git が PATH に必要。
- 行マッピングは
git diff -U0 のハンク境界での丸め。行内(列)レベルの追跡はしない。