Vim 不会执行自动命令组中的所有命令

Vim 不会执行自动命令组中的所有命令

我有一个 vim 自动命令组,如下所示:

augroup filetypedetect_wiki
    au!
    au! FileType vimwiki iabbrev cfo %% TODO {{{1<esc>hhhhhhhhveh
    au! FileType vimwiki iabbrev cfc %% TODO }}}1<esc>hhhhhhhhveh
    au! FileType vimwiki :set foldmethod=marker
    au! FileType vimwiki :set spell
    " Insert a comment block
    au! FileType vimwiki iabbrev ccc {{{ ><cr>    $ <cr>}}}<esc>kllllli
    "===Wiki markup macros
    au! FileType vimwiwki :nnoremap <leader>h1 ^i= <esc>A =<esc>^
    au! FileType vimwiwki imap <leader>h1 <esc>^i= <esc>A =<esc>^
    au! FileType vimwiwki nnoremap <leader>h2 ^i== <esc>A ==<esc>^
    au! FileType vimwiwki imap <leader>h2 <esc>^i== <esc>A ==<esc>^
    au! FileType vimwiwki nnoremap <leader>h3 ^i=== <esc>A ===<esc>^
    au! FileType vimwiwki imap <leader>h3 <esc>^i=== <esc>A ===<esc>^
    au! FileType vimwiwki nnoremap <leader>h4 ^i==== <esc>A ====<esc>^
    au! FileType vimwiwki imap <leader>h4 <esc>^i==== <esc>A ====<esc>^
    au! FileType vimwiwki nnoremap <leader>h5 ^i===== <esc>A =====<esc>^
    au! FileType vimwiwki imap <leader>h5 <esc>^i===== <esc>A =====<esc>^
    au! FileType vimwiwki nnoremap <leader>h6 ^i====== <esc>A ======<esc>^
    au! FileType vimwiwki imap <leader>h6 <esc>^i====== <esc>A ======<esc>^
    au! FileType vimwiwki nnoremap <leader>wm bi[[<esc>A]]<esc>
    au! FileType vimwiwki imap <leader>h6 <esc>bi[[<esc>A]]<esc>
augroup END

但是,当我打开 vimwiki 文件时,我只能使用列表中的一个命令:

au! FileType vimwiki iabbrev ccc {{{ ><cr>    $ <cr>}}}<esc>kllllli

今天,我尝试通过输入以下命令来查看有哪些可用内容:

:au FileType vimwiki

当我这样做时,我看到了这个:

:au FileType vimwiki
--- Auto-Commands ---
filetypedetect_wiki  FileType
    vimwiki   iabbrev ccc {{{ ><cr>    $ <cr>}}}<esc>kllllli

因此,这证实了我的怀疑:只加载了一个自动命令。但为什么会这样呢?是否有奇怪的字符破坏了该组?

答案1

au!删除被定义为自动命令,因此我认为您在定义命令时不希望出现这种情况。尝试从除第一个之外的所有内容中删除感叹号,因此它看起来像这样:

augroup filetypedetect_wiki
    au!
    au FileType vimwiki iabbrev cfo %% TODO {{{1<esc>hhhhhhhhveh
    au FileType vimwiki iabbrev cfc %% TODO }}}1<esc>hhhhhhhhveh

相关内容