在我的.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
。任何想法有什么特别的关于那一行,以及如何解决它?感谢。
答案 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/