Ad blocker interference detected!
Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers
Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.
created November 22, 2006 · complexity intermediate · author Clayton · version 5.7
I needed a way to automate creating the backup/tmp directories. It is especially annoying when I am in a new environment and I have to manually create the directories. I also prefer to use _vim rather then .vim on a Windows system so it checks for that.
function! InitBackupDir() if has('win32') || has('win32unix') "windows/cygwin let l:separator = '_' else let l:separator = '.' endif let l:parent = $HOME . '/' . l:separator . 'vim/' let l:backup = l:parent . 'backup/' let l:tmp = l:parent . 'tmp/' if exists('*mkdir') if !isdirectory(l:parent) call mkdir(l:parent) endif if !isdirectory(l:backup) call mkdir(l:backup) endif if !isdirectory(l:tmp) call mkdir(l:tmp) endif endif let l:missing_dir = 0 if isdirectory(l:tmp) execute 'set backupdir=' . escape(l:backup, ' ') . '/,.' else let l:missing_dir = 1 endif if isdirectory(l:backup) execute 'set directory=' . escape(l:tmp, ' ') . '/,.' else let l:missing_dir = 1 endif if l:missing_dir echo 'Warning: Unable to create backup directories:' l:backup 'and' l:tmp echo 'Try: mkdir -p' l:backup echo 'and: mkdir -p' l:tmp set backupdir=. set directory=. endif endfunction call InitBackupDir()
If you found this tip useful, you may also want to check out VimTip20.
Of course using just one backup/swapfile directory will mean that the following command won't work any more:
vimdiff old/foe.txt new/foe.txt
especialy if you need to merge/change both ways.
That's why in script#1537 I use local directories. But the "set directory=" might be a worthy addition to my script.
Actually, that command does work and it won't clobber the file, in :help 'directory'
- For Unix and Win32, if a directory ends in two path separators, the swap file name will be built from the complete path to the file with all path separators substituted to percent '%' signs. This will ensure file name uniqueness in the preserve directory.
Example swap files in ~/.vim/tmp:
Maybe you can clarify if I am misunderstanding what you're saying. In a test I did, even without having the extra slash it will have two different swap files called test.txt.swp and test.txt.swo.