writebackupAutomator : Automatically write a backup on the first write.
| script karma
Downloaded by 1412
Comments, bugs, improvements
script versions (upload new version)
Unless you use a revision control system, you have to write backups yourself.
The writebackup.vim plugin makes that a simple :WriteBackup command from
within Vim, but you still have to remember to trigger the backup. The
writebackupVersionControl.vim extension can make up for a missed backup when
you have already made changes to the buffer, but have not persisted them yet,
via :WriteBackupOfSavedOriginal. Still, wouldn't it be nice if Vim detected
that you have made backups of a file in the past, and automatically creates a
new backup - without any action on your side?
This plugin builds on the writebackup.vim and
writebackupVersionControl.vim plugins, and automatically writes a backup on
a day's first write of a file that was backed up in the past, but not yet
This gives you one no-hassle, worry-free backup every day. For many
writebackup.vim use cases (like editing config files distributed all over
/etc/), this initial "good state from the past" backup is the most important
one. (And of course you can still manually trigger additional checkpoint
backups via :WriteBackup as in the past.)
Once any backup exists (you can check via :WriteBackupListVersions), a new
backup will be written on each day when you first persist the buffer via
:write, provided that the file has not been modified yet today. (Otherwise,
you would not be able to undo the automatic backup via
:WriteBackupDeleteLastBackup; the automatic backup would keep reappearing
after each :write.) Watch out for file synchronization tools and version
control systems that may silently update the file modification date to today
and therefore prevent automatic backups!
For this and other reasons, it is still a good practice to trigger backups via
:WriteBackup yourself, and just use the writebackupAutomator plugin as a
safety net, for those instances where you forget to backup.
The code is hosted in a Git repo at
You can use your favorite plugin manager, or "git clone" into a directory used
for Vim packages. Releases are on the "stable" branch, the latest unstable
development snapshot on "master".
This script is also packaged as a vimball. If you have the "gunzip"
decompressor in your PATH, simply edit the *.vmb.gz package in Vim; otherwise,
decompress the archive first, e.g. using WinZip. Inside Vim, install by
sourcing the vimball or via the :UseVimball command.
To uninstall, use the :RmVimball command.
- Requires Vim 7.0 or higher.
- Requires the writebackup.vim plugin (vimscript #1828), version 3.00 or
- Requires the writebackupVersionControl.vim plugin (vimscript #1829),
version 3.21 or higher.
- Requires the ingo-library.vim plugin (vimscript #4433), version 1.007 or
You can influence the behavior of the writebackupAutomator plugin via the
buffer-local variable b:WriteBackup. When this is 0, no automatic backup will
be done even when previous backups exist. Contrariwise, when set to 1, the
buffer will be automatically backed up even when no backups exist so far.
You can use this variable in autocmds, filetype plugins or a local vimrc to
change the backup behavior for certain file types or files in a particular
Click on the package to download.
ip used for rating: 220.127.116.11
||- Adapt to the introduction of command aborts in WriteBackupVersionControl version 3.21. *** YOU NEED TO UPDATE to WriteBackupVersionControl (vimscript #1829) version 3.21 or higher! ***
- ENH: "Skip automatic backup; file was already modified today." message is annoying after each :write; Instead, give each message only once per buffer.
||Never attempt to backup when the current buffer hasn't been persisted yet, but warn in case there are already backup files lying around.
||Rename b:writebackup to b:WriteBackup to be consistent with the other
configuration variables of the WriteBackup family, and to avoid connotation
with the built-in 'writebackup' setting.*** PLEASE UPDATE YOUR CONFIGURATION ***