我正在尝试使用命令
let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
每次打开html文件时都会运行。我试过把这行
autocmd FileType html let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
在我的ftdetect和ftplugin文件夹中名为html.vim的文件中,没有任何反应。如何在html文件中每次运行命令?
该命令用于更改matchit btw的匹配行为。
答案 0 :(得分:5)
一般来说,你的autocmd没问题;问题是您正在尝试重新定义b:match_words
中完成的$VIMRUNTIME/ftplugin/html.vim
定义,因此执行顺序变得很重要。
这些自定义的位置位于之后的目录中,即~/.vim/after/ftplugin/html.vim
;只需创建一个新文件并将:let
命令放在那里。
您可以通过:scriptnames
观察源脚本的顺序。在其他情况下,当您没有覆盖默认行为时,:autocmd FileType
没问题,但我更喜欢将这些(例如自定义映射)放入~/.vim/ftplugin/html_mymappings.vim
,因为它提供了更好的分离并有助于保持.vimrc
html
1}}简短易懂。
ftdetect 子目录用于检测文件类型,即检查文件路径/名称/内容以确定正确的文件类型。它不适用于此处,因为文件类型为{{1}}。