1

每当我更改缓冲区和检查时间时,我都会设置我的 vim 来保存文件。问题是我使用 Netrw 并最终保存了 Netrw 缓冲区。我可以对除 netrw 之外的所有类型的文件运行自动命令吗?

4

1 回答 1

1

您可以:if在您的文件中使用 anautocmd来防范 netrw 文件。例如

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

但是,这仍然不太正确。您已停止保存 netrw 缓冲区,但还有其他不应该保存的缓冲区。我建议检查'buftype'并查找以协议开头的文件,例如foo://.

这是使用这种方法自动创建中间目录的示例:

" 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
于 2017-01-25T20:08:17.900 回答