Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 除了一个文件类型外,如何在每个文件类型上运行自动命令?_Vim_Autocommand - Fatal编程技术网

Vim 除了一个文件类型外,如何在每个文件类型上运行自动命令?

Vim 除了一个文件类型外,如何在每个文件类型上运行自动命令?,vim,autocommand,Vim,Autocommand,我将vim设置为每当我更改缓冲区和检查时间时保存文件。问题是我使用Netrw并最终保存Netrw缓冲区。我可以对除netrw以外的所有类型的文件运行自动命令吗?您可以在autocmd中使用:if来防范netrw文件。e、 g autocmd FileType * if &ft != 'netrw' | echo "do something" | endif 然而,这仍然不是很正确。您已停止保存netrw缓冲区,但还有其他不应保存的缓冲区。我建议检查'buftype'并查找以协议开头的文

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

您可以在
autocmd
中使用
:if
来防范netrw文件。e、 g

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
“创建父目录
" https://stackoverflow.com/questions/4292733/vim-creating-parent-directories-on-save
功能!s:MkNonExDir(文件,buf)
如果为空(getbufvar(a:buf,“&buftype”)&&a:file!~#”\v^\w+\:\/'
让dir=fnamemodify(a:file,':h')
如果!isdirectory(dir)
调用mkdir(dir,'p')
恩迪夫
恩迪夫
端功能
augroup BWCCreateDir
自动驾驶!
autocmd BufWritePre*:调用s:MkNonExDir(展开(“”),+展开(“”))
螺旋端
这可能有效