简体   繁体   中英

Vim autocmd for FileType not working indirectly

I have a custom ~/.vimrc I made with this augroup :

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

When I open vim directly to edit the ~/.vimrc like this: vim ~/.vimrc , the folding works as expected, I can fold {{{ marker:

:set foldmethod?
> foldmethod=marker

When I open vim without specifying a file: vim , and then trying to edit: :e ~/.vimrc , the foldmethod is different!

:set foldmethod?
> foldmethod=syntax

Which obviously comes from a different part of my vimrc.

Why doesn't it recognizes the file type when I open the file indirectly?

You've failed with VimScript syntax. Must be

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

What you did instead is

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

Therefore setlocal applies to the current buffer only (ie command-line argument), not to anything else.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM