(PHP)プログラマのためのVIM (5) - undo
- 元記事: Andrei Zmievski: "VIM for (PHP) Programmers" slides and resources
- この記事シリーズまとめはこちら: (PHP)プログラマのためのVIM (まとめ) - おぎろぐはてな
undo
- オリジナルのviは1回しかundoできない
- vimは無限 (メモリによる制限のみ)
undolevels
を好みの値に設定してください (デフォルトは1000)
- 簡単なケース: u - undo, CTRL-R - redo
- vim7では、branched undoが登場
- 何かをundoして、そこから変更を加えると、ブランチが作成される
- g-, g+ - 古い/新しい text stateへ移動する (through branches)
- 時間で移動できる
- :earlier Ns,m,h - N秒(s)、分(m)、時間(h)前に戻る
- :later Ns,m,h - 同じように先へ進む
- :earlier 10m - 10分前、レッドブルを飲んでやってしまったバカな変更の前に戻そう。ふう。
[補足] undo branchについて
いまいち、動きがわからなかったので、:help undo-branchesの例を見てみました。
ここからはじめる:
one two three ~
xを3回押して、oneを削除:
ne two three ~ e two three ~ two three ~
で、uを3回押して、undoする (ここでブランチができる):
e two three ~ ne two three ~ one two three ~
2番目の単語(two)をxを3回押して削除:
one wo three ~ one o three ~ one three ~
で、今度はg-を3回押して、undoする:
one o three ~ one wo three ~ two three ~
3回目のg-で最初のundo branch (oneを削除した後)に戻る。
さらに、g-を続けて、最初の状態まで持ってくる。
e two three ~ ne two three ~ one two three ~
テキストだけ眺めていても、やっぱりなんだか分からない!ので、図を書いてみました。(動きには関係ないので、見やすさを考慮して、文字の位置は揃えてます)
oneを削除して、undoして、さらにtwoを削除しようとしたところ(オレンジ色の線)のところで、ブランチが作成されます。uとCTRL-Rでの操作だと、twoを削除しはじめた時点で、oneを削除した方(青文字側)には戻れなくなってしまうのですが、g-/g+で移動すれば、そっちにも帰れるよということですね。
まだ、35ページ/全77ページ
意味が分かんなかったので理解するのに手こずった。次は、visual modeあたり