日中にファイルに適用されたすべての変更を追跡できるようにvim(テキストエディタ)を設定する方法を知っている人はいますか?誤ってサブルーチンを修正して初期状態(1日の開始など)に戻したい場合に必要です。
私は通常svnを使用して、最新バージョンのソースコードをグローバルリポジトリに保存します。しかし、時には2つのsvnコミット間のコード状態に戻る必要があるかもしれません。
修正する:
〜できるようにする継続的な取り消したとえば、元に戻すディレクトリを作成します~/.vim/undodir
。次の設定.vimrc
ファイルを入力してください:
set undodir=~/.vim/undodir
set undofile
set undolevels=1000
set undoreload=10000
答え1
値が十分に大きい場合、'undolevel'
Vimは1日の変更を取り消すことができるはずです。 Vimを途中で終了する場合は、Vimも有効にする必要があります。継続的な取り消しオプションを設定して'undofile'
。
Vimは元に戻すコマンドの順次リストだけでなく、実際にすべての変更のツリーをキャプチャします。また、元に戻す(cp。:help undo-branches
)のためのいくつかのコマンドがあります。
:earlier 12h
良い候補です。
同様のプラグインがあります群島そして元に戻すツリー、元に戻すツリーを視覚化し、ナビゲーションを許可します。
元に戻すツリーをナビゲートするのが面倒すぎる場合(たとえば、一日中多くの変更があるため)、私のような軽いバージョン管理システム(Subversionに加えて)を追加することもできます。バックアッププラグインの作成、特定の時間にバックアップを明示的に作成します。
答え2
長年、私は編集vi
中のファイルを保存するためにスクリプトラッパーを使用してきました。あまりにも多くのバックアップファイルを取得しないように、最大1日1回これを行います。
以下は私が使用するスクリプトの簡単なバージョンです。おそらく皆さんにも効果があるでしょう。以下を実行する代わりに(バックアップとともにvi)をvi
実行できます。vib
vib() {
local DATE=$(date +'%Y-%m-%d') FILE BACK
for FILE in "$@"
do
BACK="$FILE.$DATE"
test ! -f "$BACK" && cp -p "$FILE" "$BACK"
done
vi "$@"
for FILE in "$@"
do
BACK="$FILE.$DATE"
cmp -s "$FILE" "$BACK" && rm -f "$BACK"
done
}
これは.bash_profile
関数宣言に配置または削除し、実行可能ファイルに配置できます。/usr/local/bin/vib