ファイルを編集するときは、通常20回など、何度もUNDOを続けて実行します。VIMでは通常u、20回押すことで実行され、履歴スタックの20の位置でVIMが「上」になります。その後、特定のを作成すると、change最後の20個の履歴コマンドはすべて失われ、に置き換えられchangeます。changeその20ポジションを失うことなく作りたいと思います。ですから、私はVIMに履歴の記録を停止してchangeから履歴を再開するように伝えたいと思います(履歴には入れたくないchange)。
EDIT
より明確にしようとしている:FFバッファーが書き込まれたときにファイルの最後の行を更新する関数があります。そのため、を実行する20 undos + writeと、最後にwrite新しいundoブランチが開きます。undojoin内部に追加しようとしましたがFF(下記のjlmgの提案に従うように試みました)、シーケンスのwrite-undo-writeでエラーが発生します:undoの後にundojointは許可されていません。代わりに、sed ....去った後にいくつかすることができますvimが、これを使用するのでSSH、vimのみのソリューションを好みます(バッファーをアンロードしてからコマンドを実行しても、ファイルに書き込まれません)。
編集2 VIMでこれを試してみてください:空のファイルを開いてください:
i1<ESC>:wa2<ESC>:wa3<ESC>:wa4<ESC>uu:w
ここでを実行すると<CTRL>R、VIMは '3'を書き戻し、さらに<CTRL>Rを取得し4ます。これが起こるEVENあなたが行う場合は:w、それぞれの後に<CTRL>R。しかし、あなたが毎回場合は:w、あなたが経由のfuctionを実行しBufWritePre、<CTRL>R書きません3背中を。そして、これが私がやりたいことです。それが私が「歴史学を一時停止する」と書いた理由ですが、多分私が求めていることは、フルでの作業以外に不可能undotree()です。
vim.se、私はそれを試みたでしょう。とにかく、佐藤は手伝う方法を知っているようです。
sed、sedは元に戻すことができません。「履歴を一時停止」できるとしたら、後で元に戻すときにvimにどのような動作を期待できますか?私が視覚化できる唯一の動作は、それらの変更を(取り消しと一緒に)1つの取り消しブロックにグループ化することです。しかし、それがそうでなければ、何ですか?
viが、私にとってviは、元に戻すコマンドは1回元に戻され、次にuもう一度押すと、元に戻す(「やり直し」)が取り消されます。それは本当の viです。したがって、私やこのサイトの他のユーザーは、あなたの質問に対する答えを知らない可能性があります。