この答えは言う:
Vimの元に戻す/やり直しシステムは無敵です。Vimはスタックではなく取り消しツリーを使用するため、何かを入力して、元に戻したり、何かを入力したりしても、最初に入力したものを元に戻すことができます。他のほとんどすべてのプログラムでは、最初に入力したものの履歴はこの状況では失われます。
これは私が聞いた最初のものです。ツリーに沿ってバックトラックするにはどうすればよいですか?
この答えは言う:
Vimの元に戻す/やり直しシステムは無敵です。Vimはスタックではなく取り消しツリーを使用するため、何かを入力して、元に戻したり、何かを入力したりしても、最初に入力したものを元に戻すことができます。他のほとんどすべてのプログラムでは、最初に入力したものの履歴はこの状況では失われます。
これは私が聞いた最初のものです。ツリーに沿ってバックトラックするにはどうすればよいですか?
回答:
も参照してください:h undo-redo
。すべてのコマンドとその使用法がリストされています。
アンドゥツリーをトラバースするには2つの方法があります。1つは、「時間を遡る」ことです。 g+
そしてg-
、それはアンドゥ枝の間で任意にジャンプすることができますので、少し混乱することができ、時系列または逆年代順にツリー(内のすべてのノードを通過しますが、あなたがしなければg-
十分な長さ、あなたは常にあなたが行く必要がある取得します最終的に)。 またはのような時間記述子:earlier
を:later
受け取ります。繰り返しますが、これにより、取り消しブランチ間を任意にジャンプできます。7m
1h
もう1つの方法は、:undo n
where n
がアクションの番号であることを使用して、ツリー内の特定のノードにジャンプすることです。(テキストの追加、削除、置換などのすべてのアクションには、実行時に順番に番号が付けられます。)を使用して、取り消しツリーのリーフでアクションの数を調べることができます:undolist
。これにより、ブランチ間を簡単にジャンプできます。次に、u
およびCtrl-R
を使用して、そのブランチを上下に移動できます。
Vimのヘルプにいくつかの良い例があります。これがどのように機能するかを理解する最良の方法は、少し遊んでみることです。
undojoin
は関係ないようです。実際、次のヘルプセクションは、「上記では、元に戻す/やり直しの1行のみを説明しましたが、分岐することも可能です」と述べています。私がundojoin
見ないだけのブランチで使用する方法はありますか?
私はパーティーに少し遅れましたが、Vimの元に戻すツリー視覚化プラグインを作成したことを述べたいと思いました:http : //bitbucket.org/sjl/gundo.vim/
個人的には、このようにツリーをグラフ化することが、私が理解できる唯一の方法であることがわかりました。
Plug 'sjl/gundo.vim'
次に、バインドしたいキーシーケンスにnnoremap <F5> :GundoToggle<CR>
置き換え<F5>
て)インストールできます
このページはあなたが知る必要があるすべてを説明します:
vimを使用している場合は、次のコマンドを使用して、元に戻すツリーを移動できます。
u
:(元に戻す)元に戻すツリーに戻るCtrl+R
:(やり直し)元に戻すツリーで前に移動ドキュメントを時間的に前後に移動する他の方法:
:earlier 15m
:15分前に戻ります:later 15m
:15分前に移動earlier
しlater
ていてブランチ間を移動していない場合。ほとんどの人は、自分が作成したさまざまなブランチを本当に気にしたり覚えたりしないと思います。しかし、時間を遡りたいだけです。ブランチを作成して名前を付けたい場合はgit
、バージョン管理システムの方が適しています。
この質問に回答したことは承知していますが、例を追加すると思います。
新しいファイルを作成し、次のように入力します。
this is a line
undol
アンドゥツリーを表示します。この時点では、何も元に戻していません
:undol
number changes when saved
1 1 14:50:36
ここでEscキーを押して、行を次のように変更します。
this is a old line
通常モードに切り替えてu(元に戻す)を押すと、「古い」が削除されます。チェックする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-
削除されます、「古い」(あなたが最初のアンドゥツリーを横断している)。あなたが『古い』削除する場合はそれがあるg-
とプレスはg+
再び、「古い」はやり直しになります。
入力した場合
:u 3
2番目のundoブランチの葉にジャンプすると、次のようになります。
this is a new line
これの多くはここに要約されます: