根据filetype执行vim命令?

时间:2012-09-16 18:50:23

标签: vim command file-type

我正在尝试使用命令

    let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
每次打开html文件时都会运行

。我试过把这行

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

在我的ftdetect和ftplugin文件夹中名为html.vim的文件中,没有任何反应。如何在html文件中每次运行命令?

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

1 个答案:

答案 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}}。