1

I have my vim set up to save files whenever I change buffers and on checktime. The problem is that I use Netrw and end up saving Netrw buffers. Can I run an autocommand on every type of file except netrw?

Jonathan
  • 539
  • 4
  • 15
  • This might work http://stackoverflow.com/questions/6496778/vim-run-autocmd-on-all-filetypes-except – DJ. Jan 25 '17 at 20:05

1 Answers1

1

You can use an :if in your autocmd to guard against netrw files. e.g.

autocmd FileType * if &ft != 'netrw' | echo "do something" | endif

However this still isn't quite right. You have stopped from saving netrw buffers, but there are other buffers that shouldn't be saved. I would suggest checking 'buftype' and looking for files that start with a protocol e.g. foo://.

Here is an example of auto creating intermediary directories using such an approach:

" create parent directories
" https://stackoverflow.com/questions/4292733/vim-creating-parent-directories-on-save
function! s:MkNonExDir(file, buf)
    if empty(getbufvar(a:buf, '&buftype')) && a:file!~#'\v^\w+\:\/'
        let dir=fnamemodify(a:file, ':h')
        if !isdirectory(dir)
            call mkdir(dir, 'p')
        endif
    endif
endfunction
augroup BWCCreateDir
    autocmd!
    autocmd BufWritePre * :call s:MkNonExDir(expand('<afile>'), +expand('<abuf>'))
augroup END
Community
  • 1
  • 1
Peter Rincker
  • 43,539
  • 9
  • 74
  • 101