Gundo.vim が便利
Vim では入力したものを元に戻す/やりなおす(undo/redo)が当然できる。
更に undo した所から枝分かれ(ブランチ)が出来たりする。
例えば
first second third four
と入力して、最後に undo し、four を fourth と変更し、:undolist と入力すると
通番 変更数 変更時期 保存済 4 4 10:54:02 5 4 10:56:00
と表示する。
ただし undolist だけではどこから枝分かれしたのかが分かりにくい。
そこで Gundo.vim というプラグインを使うと undo の履歴、変更箇所の diff が見えるようになる。
@ [5] 36 minutes ago | | o [4] 37 minutes ago |/ o [3] 38 minutes ago | o [2] 38 minutes ago | o [1] 38 minutes ago | o [0] Original
こんな感じで表示され、o の所にカーソルを移動すると変更箇所が diff として表示される。
詳しくは以下のサイトで。
とても便利だが唯一の欠点が履歴のパネルのツリー間の移動がもの凄く遅い。
原因は移動と共に diff のプレビューを呼んでいてそれが遅い。
特に開発をしている間に undolist が溜まって行くと遅さが顕著になる。
なので移動と同時にプレビューをしないというオプションを付けた。
heavenshell / gundo.vim — Bitbucket
let g:gundo_auto_preview = 0
とすると、移動とともにプレビューしない。
ではどうやって diff を見るかというと履歴パネルで 'r' を押すとプレビュー表示するようになる。
これで大分サクサク移動できるようになる。
# デフォルトはプレビュー表示をする
この変更を作者に pull request してみたが現時点で取り入れるのに否定的っぽい。
自分のリポジトリにアップしてあるし困る事はないけど、やっぱりメインの方に取り入れて欲しい。