如何使 Vim 包 [matchit] 在混合的 html 和 js 文件上工作?

How to make Vim package [matchit] work on a mixed html & js file?

Vim 有一个名为 Matchit 的包,它可以帮助您使用“%”键从一个标签跳到另一个标签。这在 html 文件中非常有用,因为您可以从开头跳到结尾,也可以从开头 '<' 跳到结尾 '>'。 标签跳跃的工作方式似乎是随着语言的变化而变化。以上行为在一个javascript文件中停止,跳转发生在(),{}等标签上

我有以下问题:

我有一个 .tpl 文件,其中包含 html 和 javascript,但是 html 元素的 % 标签跳转不再起作用。如何启用混合行为 - html 风格跳跃和 js 风格跳跃?谢谢

%跳转到(){}[]是基于内置的'matchpairs'选项。 matchit 插件在此基础上构建并允许更复杂的跳转(如 HTML 标签)。

由于 HTML 文件类型只是扩展了 'matchpairs' 选项,您可以只使用该文件类型,也可以用于混合模式文件。 (无论如何,许多 HTML 文件包含 JavaScript 片段,因此这是一个得到很好支持的组合。)

对我来说,*.tpl 默认检测为 filetype=smarty。此文件类型(在 Vim 8.1 中)仅提供语法脚本,但不提供文件类型设置。

您可以通过创建 ~/.vim/ftplugin/smarty.vim:

继承 HTML 文件类型设置(包括 matchit 定义)
if exists('b:did_ftplugin') | finish | endif
runtime! ftplugin/html.vim
runtime! ftplugin/html_*.vim ftplugin/html/*.vim
let b:did_ftplugin = 1