2011-07-14 18 views
9

Vimのファイルバックアップシステムでは、私の諺@ $$が保存されましたが、質問があります。Vimバックアップを復元する

私はvimのそれらを復元するには~/.vim/backups

にバックアップを保存している私は、ディレクトリに行って、(日付でソート)私は私のプロジェクトフォルダに必要なディレクトリに戻って必要なファイルをコピーしました。簡単に言うと、5つのファイルしかありませんでした。しかし、私は各ファイルがどのディレクトリから来たのかを見つける明確な方法がないことに驚いています。私はvim -r path/to/fileを使ってみましたが、それはバックアップファイルではなくスワップを使うようです。私の場合、vimはクラッシュしなかったので(私は間違ってファイルを上書きした)、これらのファイルのスワップはありません。

したがって、主な質問は次のとおりです。vimを復元する最も良い方法は何ですかバックアップファイルですか?

サイドの質問:私は別の経路(例えば/path/one/file.html/path/two/file.html)から2同じ名前のファイルを持っている場合て.vim /バックアップ/ディレクトリに何が起こりますか?

+0

実際、私を噛ませるためにサイドの質問が戻ってきたようです。バックアップの1つが他のものを上書きしてしまったので、/path/two/file.html ... sighというレコードはありません。 – Tron

+0

ファイル〜/ .viminfoを読んで何かを見つけることができます。 – taro

答えて

2

私が知る限り、Vimはファイルの元の場所に関する情報を一切保存しません。

2つの同じ名前のファイルのバックアップを保存すると、.vimrcに設定されている内容に応じて、既存のバックアップを上書きするか、別の名前を使用できます。オプション 'backup'は既存のバックアップファイルを上書きしますが、 'writebackup'は上書きを避けるために新しいバックアップの名前を変更します。

詳細はVimのドキュメントをチェックアウト - :復元についての質問に答えるのに役立ちバックアップ

7

を、Vimはバックアップについては何も知りません。それはバックアップシステムは非常に簡単です - ファイルを書く。復元するには、手動で行う必要があります。

ただし、復元を簡単にするために、バックアップにさらに情報を追加することができます。

理想的には、backupdirは、ファイルのパスを拡張し、%/を交換することを強制するために//末尾称えるでしょう。例えば/tmp/foo.rbはバックアップファイル `tmp%foo.rb 'になります。

//をとり行うundo*.swpディレクトリ設定のための:help undodir:help directory参照してください。

しかし、私たちはこれを偽造することができます!

" Prevent backups from overwriting each other. The naming is weird, 
" since I'm using the 'backupext' variable to append the path. 
" So the file '/home/docwhat/.vimrc' becomes '.vimrc%home%docwhat~' 
au BufWritePre * let &backupext ='@'.substitute(substitute(substitute(expand('%:p:h'), '/', '%', 'g'), '\', '%', 'g'), ':', '', 'g').'~' 

バックアップファイルはfilename-then-directoryを読み取りますが、動作し、十分にユニークである必要があります。

例:.vimrc%home%docwhat~あなたは分のバックアップによって分が欲しかったので、あなたは、あまり仕事を失う場合は、ファイル名にタイムスタンプを付加することができ/home/docwhat/.vimrc

のバックアップのとおりです。

au BufWritePre * let &backupext = substitute(expand('%:p:h'), '/', '%', 'g') . '%' . strftime('%FT%T') . '~' 

しかし、私は」 dこのディレクトリを定期的にクリーニングするようにcronジョブを設定することをお勧めします。あなたが私の多くのファイルを編集すると、このファイルはすぐに巨大になります。

BufWritePreフックで書く前に、巧妙なことをしてbackupdirを変更することもできますが、vimでその巧みさが私を超えています(現時点では)。

チャオ!

関連する問題