Vim, складывающийся с двигателем шаблонного лезвия

У меня проблемы со складыванием Vim при использовании шаблонного движка лезвия Laravel. Он отображает складные маркеры на странице. Поэтому после обновления окна браузера я вижу /{{{/

Мой фолд установлен на маркер - это единственный фолдинг в моем .vimrc.

Кто-нибудь знает, как это исправить? Благодарю.

Хорошо, вот обновление:

После ввода подробных команд в vim вот что я получил:

:verbose set fdm → foldmethod=marker
:verbose set frm? → foldmarker = {{{,}}}
:verbose set fdt? → foldtext=foldtext()

Я думаю, поскольку лезвие основано на регулярных выражениях, оно не может правильно фильтровать фолдмаркеры?

1 ответ

Решение

Идея фолдмаркеров заключается в том, что они содержатся в файле исходного кода, но в остальном нейтральны по отношению к языку программирования. Обычно это означает, что они должны содержаться внутри комментариев. Если вы все еще видите их в браузере, это означает, что вам не удалось скрыть их от механизма шаблонов.

Вам необходимо встроить их в комментарии, например HTML: <!-- {{{1 -->, Vim может помочь вам в этом zf - создать складку) через 'commentstring' вариант.

Обратите внимание, что фолдмаркеры в основном используются только для личных, пользовательских текстовых файлов (где вы хотите создать структуру свертывания без правильного синтаксиса или другой формальной структуры). Для языков программирования вы предпочитаете либо syntax, expr, или же indent foldmethods. Это и проще, чем управлять складками самостоятельно, и это не засоряет код мусором, специфичным для редактора, которого там нет (или не делают ваши коллеги, не использующие Vim, как это?!)

Если ваш движок шаблонов основан на HTML, то это (когда ~/.vim/after/syntax/html.vim, вместе с :setlocal foldmethod=syntax должен дать вам немного складывания:

:syntax region htmlFold start="<\z(p\|h\d\|table\|colgroup\|thead\|tfoot\|tbody\|t[dhr]\|pre\|[diou]l\|li\|span\|div\|head\|script\|style\|blockquote\|form\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d
Другие вопросы по тегам