根据文件类型执行vim命令?

3

我正在尝试执行这条命令

    let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'

每次打开html文件时运行。我尝试将该行代码放在

标签之前,但它不起作用。您有什么建议吗?
    autocmd FileType html let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'

在我的ftdetect和ftplugin文件夹中,我创建了一个名为html.vim的文件,但没有任何反应。我该如何让命令在每次进入HTML文件时都运行?
该命令是更改matchit匹配行为的命令。

你可以在你原来问题的答案下发表评论。 - romainl
1个回答

5
总的来说,您的自动命令是正确的;问题在于您试图重新定义在$VIMRUNTIME/ftplugin/html.vim中完成的b:match_words定义,因此执行顺序变得非常重要。
这些自定义内容的位置位于after目录中,即~/.vim/after/ftplugin/html.vim;只需创建一个新文件并将:let命令放入其中即可。
您可以通过:scriptnames观察源脚本的顺序。在其他情况下,当您不覆盖默认行为时,:autocmd FileType是正确的,但我更喜欢将这些(例如自定义映射)放入~/.vim/ftplugin/html_mymappings.vim,因为它提供了更好的分离并有助于使您的.vimrc简洁易懂。 ftdetect子目录用于文件类型检测,即检查文件路径/名称/内容以确定正确的文件类型。在这里不适用,因为文件类型是html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接