В Vim есть пакет Matchit, который помогает переходить от тега к тегу с помощью клавиши «%». Это очень полезно для файлов html, так как вы можете переходить от начала к концу, а также от начала '<' к концу '>'. Кажется, что переход по тегам работает так, что он меняется от языка к языку. Вышеупомянутое поведение останавливается в файле javascript, и переход происходит по тегам (), {} и так далее.
У меня такая проблема:
У меня есть файл .tpl, который содержит как html, так и javascript, но переход по тегу% для html-элементов больше не работает. Как я могу включить смешанное поведение - прыжок в стиле html и прыжок в стиле js? Спасибо.
Хех, похоже, я могу просто использовать: set filetype = html в файлах .tpl, и он также работает для перехода в js-функции. Спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


%, переходящий на (), {}, [], основан на встроенной опции 'matchpairs'. Плагин матч основан на этом и позволяет более сложные переходы (например, теги HTML).
Поскольку тип файла HTML просто расширяет опцию 'matchpairs', вы можете просто использовать этот тип файла также для файлов смешанного режима. (Во всяком случае, многие файлы HTML содержат фрагменты JavaScript, так что это хорошо поддерживаемая комбинация.)
Для меня *.tpl по умолчанию определяется как filetype=smarty. Этот тип файла (в Vim 8.1) предоставляет только синтаксический сценарий, но не содержит настроек типа файла.
Вы можете унаследовать настройки типа файла HTML (включая определения соответствий), создав ~/.vim/ftplugin/smarty.vim:
if exists('b:did_ftplugin') | finish | endif
runtime! ftplugin/html.vim
runtime! ftplugin/html_*.vim ftplugin/html/*.vim
let b:did_ftplugin = 1
А как насчет
:set ftplugin=javascript.htmlили:set ftplugin=html.javascript?