3

我正在尝试使用命令

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

每次打开 html 文件时运行。我试着把线

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

在我的 ftdetect 和 ftplugin 文件夹中名为 html.vim 的文件中,什么也没发生。每次我在 html 文件中时如何运行命令?

该命令是更改 matchit btw 的匹配行为。

4

1 回答 1

5

一般来说,你的 autocmd 没问题;问题是您正在尝试重新b:match_words定义 done 中的定义$VIMRUNTIME/ftplugin/html.vim,因此执行顺序变得很重要。

这些自定义的位置在after目录中,即~/.vim/after/ftplugin/html.vim; 只需创建一个新文件并将:let命令放在那里。

您可以通过 观察源脚本的顺序:scriptnames。在其他情况下,当您不覆盖默认行为时,这:autocmd FileType很好,但我更喜欢将这些(例如自定义映射)放入~/.vim/ftplugin/html_mymappings.vim中,因为它提供了更好的分离并有助于保持.vimrc简短易懂。

ftdetect子目录用于文件类型检测,即检查文件路径/名称/内容以确定正确的文件类型。它不适用于此处,因为文件类型是html.

于 2012-09-16T19:08:15.927 回答