diff options
Diffstat (limited to 'vim/config/undo.vim')
-rw-r--r-- | vim/config/undo.vim | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/vim/config/undo.vim b/vim/config/undo.vim new file mode 100644 index 00000000..3df06d80 --- /dev/null +++ b/vim/config/undo.vim @@ -0,0 +1,32 @@ +" Rebind Ctrl-C in insert mode to undo the current insert operation +inoremap <C-c> <C-c>u + +" Keep screeds of undo history +set undolevels=2000 + +" Keep undo history in a separate file if the feature is available, we're on +" Unix, and not using sudo(8); this goes really well with undo visualization +" plugins like Gundo or Undotree. +if !strlen($SUDO_USER) && has('unix') && has('persistent_undo') + + " Keep per-file undo history in ~/.vim/undo; the double-slash at the end + " of the directory prods Vim into keeping the full path to the file in its + " undo filename to avoid collisions; the same thing works for swap files + set undofile + set undodir^=~/.vim/undo// + + " Create the ~/.vim/undo directory if necessary and possible + if !isdirectory($HOME . '/.vim/undo') && exists('*mkdir') + call mkdir($HOME . '/.vim/undo', 'p', 0700) + endif + + " Don't track changes to sensitive files + if has('autocmd') + augroup undoskip + autocmd! + silent! autocmd BufWritePre + \ /tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*,*/shm/* + \ setlocal noundofile + augroup END + endif +endif |