jump to navigation

Vimで自動連番バックアップ&差分表示

2007-09-24 13:05 Posted by
nase
in : プログラミング
blue_ribbon.jpg

うっかり間違った内容で上書きしたり、何らかの理由でファイル内容が消えてしまった場合など、テキストファイルを以前の状態に戻したくなるということは結構あります。

Vimには標準で一世代のバックアップ機能が付いていますが、残念ながら2回以上前の保存状態には戻すことができません。

今回は、Vimで自動的に連番バックアップを作成する方法を紹介します。

この方法では任意の数だけ(最大9999まで)連番のバックアップを自動的に作成してくれるようになります。

savevers.vim

使うVimスクリプトはこちら。

ちょっと古いのが心配なところですが、ver7.xでもなんとか動いてくれるよう。

解説は以下のページが分かりやすいです。

これらのページで使い方はほとんど分かってしまうので、ここでの説明は省きます。(手抜き)

ただ、私の環境では「let savevers_max」で設定したバックアップの保存件数が反映されなかった(?)ので、そこだけ注意してみてください。(結局Vimスクリプト内で直接設定しています)

関連する設定は以下のようになりました。

"savevers.vimを動作させるためパッチモードへ移行(savevers.vim)
set patchmode=.clean
"バージョン管理ファイルを保存するディレクトリ
let savevers_dirs = &backupdir
"パッチモードでバージョン管理する最大数(なぜか反映されず)
let savevers_max = 10
":Purgeでカレントファイルの全てのバックアップを削除
let savevers_purge = 0
"Diff表示の際にウィンドウをリサイズしない
let versdiff_no_resize = 1
"<F5>でひとつ前のバックアップと比較
nmap <silent> <F5> :VersDiff -<CR>
"<F6>でひとつ後のバックアップと比較
nmap <silent> <F6> :VersDiff +<CR>
"<Leader>vqでVersDiffから抜ける
nmap <silent> <Leader>vq :VersDiff -c<CR>

「<F5>」キーと「<F6>」キーは、押すたびにひとつずつ前・後のバージョンをたどって比較表示してくれます。(これが超絶便利!)

Diff画面の操作は「VimからSubversionを使いこなす」の記事に書いた「VimDiffの使い方とオススメ設定」と同じなので、そちらも併せてご覧あれ。

Comments»

no comments yet


*Comments and trackbacks will appear after it is approved by the administrator.