一个aucmd of many设置文件类型不起作用

时间:2017-01-07 06:39:45

标签: vim

在我的.vimrc我有aucmd!的这一组:

au! BufRead,BufNewFile *.dasc   set ft=c
au! BufRead,BufNewFile *.fun    set ft=sml
au! BufRead,BufNewFile *.hsc    set ft=haskell
au! BufRead,BufNewFile *.hsc    set ft=haskell
au! BufRead,BufNewFile *.json   set ft=javascript
au! BufRead,BufNewFile *.lhs    set ft=haskell
au! BufRead,BufNewFile *.ll     set ft=llvm
au! BufRead,BufNewFile *.md     set ft=markdown
au! BufRead,BufNewFile *.pl     set ft=prolog
au! BufRead,BufNewFile *.sig    set ft=sml
au! BufRead,BufNewFile *.sml    set ft=sml
au! BufRead,BufNewFile *.td     set ft=tablegen
au! BufRead,BufNewFile *.v      set ft=coq
au! BufRead,BufNewFile *.x      set ft=text " alex
au! BufRead,BufNewFile *.y      set ft=text " happy

大多数工作正常 - 例如,默认情况下,当我编辑.v文件时,vim选择ft=verilog,但我在au!的这个块中覆盖了它,我得到了ft=coq正如所料。但由于某种原因,*.y的命令永远不会起作用 - 我得到ft=yacc。任何想法有什么特别的关于那一行,以及如何解决它?感谢。

1 个答案:

答案 0 :(得分:1)

  • 首先需要将verbose选项设置为9,以显示每个已执行autocmd的日志:

    :set verbose=9
    
  • 现在,您可以通过执行以下命令查看所有相关autocmd的列表及其所在位置:

    :autocmd * *.y
    

以下命令使您能够更好地搜索和解析autocmd生成的输出:

:new | redir =>output | silent exec "autocmd" | redir END | let @y = output | exec "put y" | g/\s\*\.y\s/