首页 > 解决方案 > FileType 的 Vim autocmd 不能间接工作

问题描述

我有一个~/.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 的不同部分。

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

标签: vimneovim

解决方案


你在 VimScript 语法上失败了。一定是

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

你所做的是

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

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


推荐阅读