VIM履歴を一時停止する方法は?

VIM履歴を一時停止する方法は?

ファイルを編集するときは、通常、UNDOを連続して複数回(たとえば20回)実行します。 VIMでは通常、u20回を押して実行されます。これにより、VIMは履歴スタック内のステップ20に「移動」します。その後、1つを実行すると、change最後の20個の書き込みコマンドがすべて失われて交換されますchangechangeその20桁を失うことなく終わりたいです。だからこれを行う前に、VIMに記録の記録を停止して記録を再開するように言いたいと思いますchange(記録に含まれたくありませんchange)。

編集する より明確に説明すると、FFバッファへの書き込み中にファイルの最後の数行を更新する機能があります。したがって、を実行すると、20 undos + write最後の実行でwrite新しい元に戻すブランチが開きます。undojoin内部的に追加しようとしましたがFF(下のjlmgのアドバイスに従って試みました)、書き込み - 元に戻す - 書き込みシーケンスでエラーが発生しました。元に戻した後は、Unionの元に戻すことはできません。sed ....それを残した後に何かをすることができますが、vimそれを使用しているSSHのでvim専用のソリューションを好みます(バッファをアンロードした後にコマンドを実行するとファイルは作成されません)。

編集2VIMでこれを行います。空のファイルを開き、次の操作を行います。

i1<ESC>:wa2<ESC>:wa3<ESC>:wa4<ESC>uu:w

nowを実行すると、<CTRL>RVIMは「3」を書き換えて次の結果を<CTRL>R得ます。4でもただし、aが実行されるたびに実行関数を渡しても、書き戻されません:w。それが私がやりたいことなので、「記録を一時停止」と書いたのですが、たぶんそれは全体です。<CTRL>R:wBufWritePre<CTRL>R3undotree()

ベストアンサー1

Vimの履歴を一時停止する必要はありません。実際のデータは、undotree()この関数を使用して検索できるツリーを形成します。もちろん、これをよりユーザーフレンドリーなものに変える多くのプラグインがあります。多くの軍隊モンド元に戻すツリー。元に戻す永続性も有効にすると(参照:h undo-persistence)、ファイルの完全な変更履歴を簡単に参照できます。

おすすめ記事