知っているといざという時に役立つ、ちょっと特殊なundo、redo
追記
vimのバージョン 7.0.237
たとえば
3.「あれ、これちがくね?」って、undoして
さっきのところまで戻る
5.「やっぱさっきのであってんじゃね!?」
で、undoしても・・・
2に戻りたいのに戻れない!?
っていうこと、時々ないですか?
vimならg+,g-コマンドで戻れますよと。
undotree
vimはundotreeという概念があり、編集履歴をツリー状に管理しています。
通常のundo、redoでは各ノードの最新の枝だけしか行き来出来ませんが、
任意のノードに移動する手段が用意されています。
そのコマンドがg-とg+です。
解説
どういうことが起きてるのかと言うと下の図のようなことが起きてます。
数字は冒頭の図の番号、通常のundo、redoでは赤のラインを行ったり来たりするだけで、2の状態には戻れません。
g-コマンドでは、現在のノードの次に新しいノードに移動するために、2の状態に戻すことが出来ます。
関連コマンド
undotree関連のコマンドは以下です。
- g-
- g+
- :undolist
- :undo NODE_NUMBER
編集履歴が複雑になったときは:undolist
↓
↓
追記:マニュアルの場所
このことはヘルプのUndo and Redo(undo.txt)かThe undo tree(usr_32.txt)を見ると書いてあります。
:help undo-tree
まとめ
undo,redoで困ったらg-、g+コマンドを試してみよう