8

vim では、すべてのバッファのすべての変更を時系列で元に戻したいと思います。

たとえば、vim セッションでは通常、多くのタブが開いており、各タブに多くのウィンドウがあります。u元に戻す (またはg;/変更リストを移動する)を使用するとg,、vim は、他のバッファーに最近行われた変更がある場合でも、そのバッファーに加えられた変更を移動します。(私が認めているのは、私がほとんどの場合望んでいるものです。)

しかし、すべてのバッファの変更を時系列でさかのぼる方法はありますか? (vim はタブからタブへと飛び回ると思いますが、それで問題ありません。)

なぜこれが役立つのでしょうか?...ほとんどの場合、休憩後にコーディングを再開するときに、「今どこにいるのか」、つまり前回行ったすべての変更を思い出すことができます。

(macvim 7.3 を使用)

更新: git / mercurial の使用に関する回答は良い点を示しgit stashています (特に に感謝します)。ただし、構文の色付け、vim 内などを使用して、最近の変更を順番に戻すため、この機能はまだ便利です。)

4

2 に答える 2

4

あなたは長い道のりを歩むことができますundolist

:bufdo echo expand('%') | undolist

結果は、たとえば、単純な編集セッションの場合:

SpiritParser.cpp
number changes  when               saved
     1       1  13:57:51
SpiritParser.h
number changes  when               saved
     1       1  13:57:55

表示されているすべてのウィンドウに対してこれを行うには、windoの代わりに行いbufdoます。複数のタブがある場合は、それを作成します

:tabdo windo echo expand('%') | undolist
于 2012-05-23T12:01:40.483 に答える
1

Git、Mercurial、Subversion など、何らかのバージョン管理を使用する必要があります。</p>

毎朝、プロジェクトのログを読み、以前のコミットを調べて何が変更されたかを確認したり、ブランチを作成して特定の機能に取り組んだり、以前の変更をよりよく理解するためにクリーンで説明的なコミット メッセージを書いたりすることができます。

または、次のようなこともできます:windo u。しかし、それは面倒に聞こえます。

于 2012-05-23T11:46:11.350 に答える