1. ホーム
  2. vim

[解決済み] Vimのアンドゥツリーはどのように使われるのですか?

2022-05-24 16:30:26

質問

この回答 は言う。

Vim のアンドゥ/リドゥシステムは無敵です。何かをタイプして、アンドゥして、また何かをタイプしても、Vim はスタックではなくアンドゥツリーを使用しているので、最初にタイプしたものを取り戻すことができます。他のほとんどすべてのプログラムでは、最初にタイプしたことの履歴はこのような状況では失われます。

これは初めて聞く話です。どうすればツリーに沿ってバックトラックできるのでしょうか?

どのように解決するのですか?

こちらもご覧ください。 :h undo-redo を参照してください。

取り消しツリーをたどるには、2つの方法があります。 1つは "過去に戻る" です。 g+g- は、ツリーのすべてのノードを時系列あるいは逆時系列で走査します (取り消しブランチ間を任意にジャンプできるので、少し混乱するかもしれませんが、もし g- を長く続ければ、最終的には必ず行くべきところにたどり着けるでしょう)。 :earlier そして :later のようなタイムディスクリプタを取る。 7m または 1h また、これは元に戻すブランチ間を任意にジャンプさせることができます。

もう一つの方法は、ツリー内の特定のノードにジャンプするために :undo n ここで n はアクションの番号です。 (すべてのアクション、つまりテキストの追加、削除、置換は、それらを行うときに連続した番号が付けられます)。 取り消しツリーの葉にあるアクションの番号は、次のようにして調べることができます。 :undolist . これで簡単に枝の間を移動することができます。 次に uCtrl-R でその枝を上下に移動します。

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