Как я могу заставить плагин closetag vim работать для всех html-тегов?
Вопрос
Я использую плагин closetag.vim, но, похоже, он работает не для всех тегов.В коде плагина есть игнорируемые теги var, которые, как я заметил, не закрывают ex dd dl, но есть много других, которых нет в списке, которые не работают (p, ul, li).
Казалось, ничего не произошло после обновления списка игнорируемых тегов.
Чтобы заставить этот плагин работать, вы просто вводите текст тега и нажимаете tab, верно?ie div
Я что-то упускаю?
Решение
Как вы установили плагин?
У меня были проблемы с closetag.vim, когда я устанавливал его в ~/.vim/plugins
.Затем я переместил его в ~/.vim/scripts
вместо этого, и добавил следующее к моему .vimrc
:
:let g:closetag_html_style=1
:source ~/.vim/scripts/closetag.vim
и теперь у меня это прекрасно работает.Я обнаружил, что он закрывает все теги (включая те, которые включены в список "игнорировать"), но не те, которые являются самозакрывающимися (например <img/>
).
В версии скрипта, которую я использую (0.9.1), он определяет <C-_>
в качестве триггера для завершения тегов.Если вы сопоставили команду с <tab>
, тогда это тоже должно сработать.
Другие советы
Я также не могу заставить этот плагин работать, однако в моем случае то, что он делает, выдает несколько сообщений об ошибках, прежде чем окончательно заработает.Например, если я попытаюсь закрыть тег H1, я получу сообщение об ошибке Error Detected while processing function GetCloseTag
и ошибка заключается в undefined variable b:UnaryTagsStack
.
Похоже, это был бы полезный плагин, но он просто не будет сотрудничать.
У меня была такая же проблема, и ответ нельстрома выше не решил ее для меня.Что сработало для меня, так это добавление следующих строк в мой файл .vimrc:
if !exists("b:unaryTagsStack") || exists("b:closetag_html_style")
if &filetype == "html" || exists("b:closetag_html_style")
let b:unaryTagsStacktack="area base br dd dt hr img input link meta param"
else " for xml and xsl
let b:unaryTagsStack=""
endif
endif
if !exists("b:unaryTagsStack")
let b:unaryTagsStack=""
endif
Я не знаю, зачем добавлять просто let b:unaryTagsStack=""
трюк не сработал, но приведенная выше комбинация, кажется, исправляет это для меня во всех типах файлов.