回答:
はい; 私はこれを持っています.vimrc
:
set backup
function! BackupDir()
if has('win32') || has('win64')
let l:backupdir=$VIM.'/backup/'.
\substitute(expand('%:p:h'), '\:', '~', '')
else
let l:backupdir=$HOME.'/.vim/backup/'.
\substitute(expand('%:p:h'), '^'.$HOME, '~', '')
endif
if !isdirectory(l:backupdir)
call mkdir(l:backupdir, 'p', 0700)
endif
let &backupdir=l:backupdir
let &backupext=strftime('~%Y-%m-%d_%H-%M-%S~')
endfunction
autocmd! bufwritepre * call BackupDir()
Vimは、ファイルを保存するたびに一意の名前のバックアップファイルを保存します。バックアップは~/.vim/backup
(Linuxの場合)、元のファイルのディレクトリ階層を複製するディレクトリ階層に保存されます。バックアップファイルが必要なときに簡単に見つけることができます。私はこれを一度設定して忘れました。必要になることはめったにありません(通常、すべての履歴はgitに保存されるため)が、必要な場合、それは単なる命の恩人です。
(ちなみに、現在ののサイズを確認しただけで、~/.vim/backup
このシステムで2年間作業した後は1.3 GBになります。おそらく、すぐにクリーンアップする必要があります)
あなたはあなたがしようとしているVimのファイルにすでにいくつかの変更を加えているが、:write
まだディスク上にある元のファイルをバックアップしたいということですか?
Vimから直接外部シェルコマンドを起動できます。Vimの:help cmdline-special
シンボルは現在のファイル名のハードコーディングを回避するため、これを簡単にカスタムマッピングまたはコマンドに変換できます。
:!cp % %.bak
別の方法として、Vimのアンドゥスタックを使用することもできます。最初の:earlier 1f
コマンドで元のファイルを一時的に復元し:write %.bak
、次に:later 1f
。
完全なバックアップソリューションを探している場合は、writebackupVersionControlプラグインにも次のようなコマンドがあります:WriteBackupOfSavedOriginal
。