ファイルを編集するときは、通常、UNDOを連続して複数回(たとえば20回)実行します。 VIMでは通常、u
20回を押して実行されます。これにより、VIMは履歴スタック内のステップ20に「移動」します。その後、1つを実行すると、change
最後の20個の書き込みコマンドがすべて失われて交換されますchange
。change
その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>R
VIMは「3」を書き換えて次の結果を<CTRL>R
得ます。4
でもただし、aが実行されるたびに実行関数を渡しても、書き戻されません:w
。それが私がやりたいことなので、「記録を一時停止」と書いたのですが、たぶんそれは全体です。<CTRL>R
:w
BufWritePre
<CTRL>R
3
undotree()