5 years ago
If I edit a file in a directory that doesn't yet exist, it's usually because I forgot to create the directory first. This autocommand asks whether it should do that for me.
If this happens to be a mistake (maybe I'm not where I thought I would be), I can easily enter "n" at the prompt to cancel the process. If you'd rather not have the confirmation dialog at all, just remove the relevant if-clause.
augroup ensure_directory_exists autocmd! autocmd BufNewFile * call s:EnsureDirectoryExists() augroup END function! s:EnsureDirectoryExists() let required_dir = expand("%:h") if !isdirectory(required_dir) " Remove this if-clause if you don't need the confirmation if !confirm("Directory '" . required_dir . "' doesn't exist. Create it?") return endif try call mkdir(required_dir, 'p') catch echoerr "Can't create '" . required_dir . "'" endtry endif endfunction