綾小路龍之介の素人思考

[vim] savevers.vimを使って編集ファイルの世代バックアップを取る

世代バックアップを取るのに前は、bash の関数を ~/. bashrc に追加して使っていました。適当に作った関数だったので、less から vi に渡したときに vi の起動に失敗しました。確か下のような感じだったと思います。

vi(){
  cp $1 $1.`date +%Y%m%d%H%M%S`;
  command vi $1;
}

これではまずいので、savevers.vim を導入しました。

$ wget http://www.vim.org/scripts/download_script.php?src_id=261 -O ~/.vim/plugin/savevers.vim
$ echo 'set backup'                           >> ~/.vimrc
$ echo ':set patchmode=.clean'                >> ~/.vimrc
$ echo ':let savevers_types = "*"'            >> ~/.vimrc
$ echo ':let savevers_dirs = &backupdir'      >> ~/.vimrc
$ echo ':let versdiff_no_resize=1'            >> ~/.vimrc
$ echo ':nmap <silent> <F5> :VersDiff -<cr>'  >> ~/.vimrc
$ echo ':nmap <silent> <F6> :VersDiff +<cr>'  >> ~/.vimrc
$ echo ':nmap <silent> <F8> :VersDiff -c<cr>' >> ~/.vimrc

削除系のコマンドはこわいのでショートカット登録 (というのかは不明) しなかった。詳しい使い方は savevers.vim の配布ページに載っているのでそこを参照してほしい。

コマンド一覧
:Purge編集中のファイルのバックアップの内最も古いもの以外を全て削除
:Purge 0編集中のファイルのバックアップを全て削除
:Purge -a 0編集中のファイルのバックアップがあるディレクトリの中にあるバックアップを全て削除(編集中のファイルも編集中でないファイルもとにかく全て)

ひとつ気付いた事がある。それは、:Purge する場合、削除されるのは新しいファイルからということだ。例えば、:Purge -v N とした場合。1 番目から N 番目までが残り、N + 1 番目以降は消去される。新しいファイルのほうが、数が大きくなるので、古いファイルが残り、新しいファイルが消去されることになる。手動でバックアップファイルを消去して、わざと欠番を作った場合、その欠番を数が小さいほうから順に埋めるようにしてバックアップが作成されるようだ。

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2008-11-27T17:55:35+09:00
  2. Modified: 2008-11-27T08:02:55+09:00
  3. Generated: 2017-03-17T23:09:15+09:00