Vim 文件类型的 autocmd 不能间接工作

Vim autocmd for FileType not working indirectly

我有一个自定义 ~/.vimrc 我用这个 augroup:

augroup filetype_vim
    autocmd!
    autocmd! BufWritePost .vimrc* source %
    autocmd FileType vim |
      setlocal foldlevel=0  foldmethod=marker foldmarker={{{,}}}
augroup END

当我直接打开 vim 像这样编辑 ~/.vimrc 时:vim ~/.vimrc,折叠工作正常,我可以折叠 {{{ 标记:

:set foldmethod?
> foldmethod=marker

当我在没有指定文件的情况下打开vim:vim,然后尝试编辑::e ~/.vimrc,折叠方式不同!

:set foldmethod?
> foldmethod=syntax

这显然来自我的 vimrc.

的不同部分

为什么我间接打开文件时无法识别文件类型?

你的 VimScript 语法失败了。必须是

 autocmd FileType vim
  \ setlocal foldlevel=0  foldmethod=marker foldmarker={{{,}}}

你所做的是

autocmd FileType vim <nothing> | <nothing>
setlocal foo bar

因此 setlocal 仅适用于当前缓冲区(即命令行参数),不适用于其他任何内容。