web-dev-qa-db-ja.com

VIMのアンドゥツリーはどのように使用されますか?

この答え 言う:

Vimの元に戻す/やり直しシステムは無敵です。 Vimはスタックではなく元に戻すツリーを使用するため、何かを入力し、元に戻す、別の何かを入力しても、最初に入力したものを戻すことができます。他のほとんどすべてのプログラムでは、この状況では最初に入力したものの履歴が失われます。

これは私がこれを聞いた最初のものです。ツリーに沿ってバックトラックするにはどうすればよいですか?

127
Nathan Fellman

すべてのコマンドとその使用法をリストした:h undo-redoも参照してください。

元に戻すツリーをトラバースするには2つの方法があります。 1つは「過去に戻る」ことです。 g+およびg-は、時系列または逆時系列でツリー内のすべてのノードをトラバースします(元に戻すブランチ間で任意にジャンプできるため、少し混乱する可能性がありますが、g-十分な長さで、最終的にどこに行く必要があるかを常に把握できます。 :earlierおよび:laterは、7mまたは1hなどの時間記述子を取ります。繰り返しますが、これは元に戻すブランチ間で任意にジャンプできます。

もう1つの方法は、:undo nを使用してツリー内の特定のノードにジャンプすることです。ここで、nはアクションの番号です。 (すべてのアクション、つまり、テキストの追加、削除、置換は、それらに順番に番号が付けられます。):undolistを使用して、元に戻すツリーの葉のアクションの数を調べることができます。これにより、ブランチ間を簡単にジャンプできます。その後、uCtrl-Rを使用して、そのブランチを上下に移動できます。

Vimヘルプにはいくつかの良い例があります。これがどのように機能するかを理解する最良の方法は、少し試してみることです。

136
Brian Carper

私はパーティーに少し遅れましたが、私はVim用のアンドゥツリー視覚化プラグインを書いたことに言及したと思いました: http://bitbucket.org/sjl/gundo.vim/

個人的に、このようにツリーをグラフ化することが、それを理解できる唯一の方法であることがわかりました。

67
Steve Losh

このページはあなたが知る必要があるすべてを説明します:

http://vimdoc.sourceforge.net/htmldoc/usr_32.html

16
SolutionYogi

Vimを使用している場合、次を使用して元に戻すツリーをナビゲートできます。

  • u:(元に戻す)元に戻すツリーに戻る
  • Ctrl+R:(やり直し)元に戻すツリー内を前方に移動します

文書を時間内に前後に戻す他の方法:

  • :earlier 15m:15分前に戻ります
  • :later 15m:15分前に移動します
15
Wadih M.

この質問には答えられていることは承知していますが、例を追加すると思いました。

新しいファイルを作成して、次を入力します。

this is a line

undolは、元に戻すツリーを表示します。この時点では、何も元に戻していません

:undol

number changes  when               saved
     1       1  14:50:36

eSCを押して、行を次のように変更します。

this is a old line

通常モードに切り替えてu(元に戻す)を押すと、「old」が削除されます。 undolをチェックすると、この時点ではまだ1つのブランチしかありません。

次のように行を変更します:

this is a new line

:undolが表示されます:

number changes  when               saved
     2       2  87 seconds ago
     3       2  3 seconds ago

次のように入力して、最初のブランチに切り替えることができます

:u 2

これにより、番号2に関連付けられたブランチの最後に移動します。g+およびg-を使用して、このブランチに沿って移動できます。この時点では、g+は何もしません(あなたはリーフにいます)。 g-を押すと「old」が削除されます(最初の元に戻すツリーをたどっています)。つまり、g-で「old」を削除し、もう一度g+を押すと、「old」やり直します。

入力した場合

:u 3

2番目の元に戻すブランチのリーフにジャンプすると、次のように表示されます。

this is a new line
8
Alexander

これの多くはここに要約されます:

http://vim.wikia.com/wiki/Using_undo_branches

6
Ben Fritz

Gundo.vimを使用するほかに、g+およびg-

3
vbd