Подтвердить что ты не робот

HTML отступы, не работающие в скомпилированном Vim 7.4, любые идеи?

При попытке получить файлы vim в indent .html правильно, я следил за примерами здесь.

Учитывая следующий файл index.html:

<html>
  <body>
    <p>
    text
    </p>
  </body>
</html>

Я попытался открыть его как это (игнорируя мой .vimrc, чтобы убедиться, что он не мешает отрицательно)

vim -u NONE index.html

Затем я установил параметры, чтобы включить автоматический отступ:

:filetype plugin indent on
:set filetype=html           # abbrev -  :set ft=html
:set smartindent             # abbrev -  :set si

И затем я отложил весь файл с помощью gg=G, и это результат:

<html>
<body>
<p>
text
</p>
</body>
</html>

Я проверил, чтобы файл html.vim существовал, и он определенно там

$ head -2 ~/.vim/after/ftplugin/html.vim 
" Vim syntax file
" Language: HTML
$ head -2 ~/.vim/ftplugin/html.vim
" Vim syntax file
" Language: HTML

Моя версия vim равна 7.4:

$ vim --version | head -1
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Sep 23 2013 16:12:20)

И он включает интеллектуальный отступ:

$ vim --version | grep smartindent
-ebcdic          +mouse           +smartindent     +xim

Я не понимаю, почему отступы не работают! Любые подсказки или идеи для дальнейшего изучения этой проблемы?

FWIW, я запускаю Ubuntu 13.04.

4b9b3361

Ответ 1

Как упоминалось в ответе Кори, в настоящее время распространенная версия Vimscript 2075. Если вы перейдете на эту страницу плагина, вы можете просмотреть все теги, которые по умолчанию увеличивают отступ.

Ни один из тегов, которые вы указали в вашем примере, не указан в этом списке по умолчанию, но их много.

Так как отступ HTML очень открыт для пользовательских предпочтений, поддерживающий плагин включил опцию добавления или удаления тегов в или из списка тегов, который увеличивает отступ. Смотрите: help html-indent, где он предлагает:

You can add further tags with:

  :let g:html_indent_inctags = "html,body,head,tbody"

Ответ 2

Между версиями 7.3 и 7.4 изменился связанный файл html.vim, расположенный в $VIMRUNTIME/indent. В настоящее время распределенная версия на самом деле Vimscript # 2075, и по умолчанию она не содержит тегов html.

Я рекомендую решение Ben выше, но в качестве альтернативы вы можете вернуться к предыдущей версии распределенного файла html.vim.

Чтобы сделать это, просто замените существующий файл 7.4 html.vim на тот, который из 7.3.

wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
tar jxf vim-7.3.tar.bz2
cp vim73/runtime/indent/html.vim ~/.vim/indent/

Ответ 3

По состоянию на 7.4.52

внутри vim:

:let g:html_indent_inctags = "html,body,head,tbody"
:call HtmlIndent_CheckUserSettings()

else в .vimrc:

let g:html_indent_inctags = "html,body,head,tbody"

Я хотел просто добавить это в комментарий к верхнему ответу, чтобы отдать назад, потратив слишком много времени, не получив ответа на работу, но, по-видимому, не имеет достаточной репутации: (