0

vimでファイルを編集していて、保存するとしましょう(1)。編集を続け、再度保存します ( 2 )。この最後の保存を「削除」することは可能ですか?つまり、vim はファイルを現在の状態のままにしますが、最後の保存は1であると考えていますか?

明確にするために、ファイルを開いて書き込みます

one
two

保存します。それから編集を続けるので、今です。

one
two
three
four

今、私はそれをこの状態で保存する必要があり、その直後にvimにまだ表示させる何かを行います(これは私が知りたいことです)

one
two
three
four

しかし、ファイルを閉じると (または で元に戻すと:e!、次の状態になります)

one
two

私は処理を使用しているため、これを実行したいと考えています。外部エディタで使用するには、ファイルに作用する外部プログラムに依存しています。つまり、ファイルを保存する必要があるため、プログラムはファイルの目的の状態に基づいて動作できます。 . ただし、保存したファイルがあり、結果をテストするためだけにいくつかの変更を加えたい場合があります。ただし、結果が気に入らない場合は、この新しく保存されたバージョンに「行き詰まり」ます (以前に保存された状態を取得するために元に戻す必要がある回数を正確に覚えていない限り)。これを、ファイルを保存してそれに対してプログラムを実行するコマンドにチェーンする方法。

4

4 に答える 4

2

これは元の編集から取得したものです。

実行する前にファイルを保存する必要があるvimアクションがありますが、実験の可能性を開いたままにしておきたいです(したがって、変更が気に入らない場合は、 :e! を実行するか、ファイルを閉じることができます.出来ますか?

あなたが探しているのはversion controlと呼ばれるものです。バージョン管理により、ファイルに変更を加え、それらの変更を保存して元に戻すことができます。gitまたはsvnを見てください。

git でできることの例を次に示します。

コンテンツを含むファイルがあるとしましょう

one
two

次に、ファイルをバージョン管理ソフトウェアにチェックインできます。(git で行うgit commit)

その後、ファイルを次のように変更します。

one
two
three
four

この時点でgit diff、最後のコミット以降にファイルに加えたすべての変更を確認できます。

変更が気に入ったら、それらをコミットできます。変更が気に入らない場合はgit checkout <file>、ファイルを元の状態に戻すことができます。

one
two
于 2013-06-30T02:59:07.750 に答える
1

これは、ミニテックの答えに基づいた方法です。私はこれを広範囲にテストしていないことに注意してください。

  1. 元の編集を行い、保存します。
  2. 次の編集を行い、保存します。
  3. :ea 1f最後に保存したときのバッファの状態に戻すために使用します (「 」を参照:h :earlier)。
  4. もう一度保存します。
  5. :lat 1fステップ 2 の後のバッファに戻るために使用します (「 」を参照:h :later)。
  6. :set nomodifiedVim がバッファーが変更されたため、再度保存する必要があると判断しないようにするために使用します。

手順 3 と 4 で行った操作により、ディスク上のファイルは手順 1 の後に表示されたように見えます。

ただし、代わりにバージョン管理を使用することもお勧めします。fugitive プラグインは、邪魔にならずに Git を Vim で使用するための非常に優れた方法です。

于 2013-07-01T19:54:33.623 に答える
0

あなたの2つの説明は互いに矛盾しているように見えるので、2番目の説明に答えます:)

現在のファイルを未変更としてマークするには、次のようにします。

:set modified!
于 2013-06-30T02:02:54.987 に答える