Как свернуть/развернуть HTML-теги с Vim - программирование
Подтвердить что ты не робот

Как свернуть/развернуть HTML-теги с Vim

Есть ли какой-нибудь плагин для сгибания HTML-тегов в Vim?
Или есть другой способ настроить ярлык, чтобы свернуть или развернуть html-теги?
Я хотел бы складывать/разворачивать html-теги так же, как и с отступом.

4b9b3361

Ответ 1

Я нашел zfat (или, в равной степени, zfit), хорошо работает для складывания с HTML-документами. za будет переключать (открывать или закрывать) существующую складку. zR открывает все складки в текущем документе, zM эффективно повторно включает все существующие складки, отмеченные в документе.

Если вы сильно используете складки, вы можете сделать несколько удобных клавиш для себя в своем .vimrc.

Ответ 2

Если вы отступаете от своего HTML-кода, то должно работать следующее:

set foldmethod=indent

Проблема с этим, я считаю, есть слишком много складок. Чтобы обойти это, я использую zO и zc для открытия и закрытия вложенных складок соответственно.

Для получения дополнительной информации см. help fold-indent:

The folds are automatically defined by the indent of the lines.

The foldlevel is computed from the indent of the line, divided by the
'shiftwidth' (rounded down).  A sequence of lines with the same or higher fold
level form a fold, with the lines with a higher level forming a nested fold.

The nesting of folds is limited with 'foldnestmax'.

Some lines are ignored and get the fold level of the line above or below it,
whichever is lower.  These are empty or white lines and lines starting
with a character in 'foldignore'.  White space is skipped before checking for
characters in 'foldignore'.  For C use "#" to ignore preprocessor lines.

When you want to ignore lines in another way, use the 'expr' method.  The
indent() function can be used in 'foldexpr' to get the indent of a line.

Ответ 3

Установите js-beautify команда (версия JavaScript)

npm -g install js-beautify  
wget --no-check-certificate https://www.google.com.hk/ -O google.index.html  
js-beautify -f google.index.html  -o google.index.bt.html  

http://www.google.com.hk orignal html:

http://www.google.com.hk orignal

js-beautify и vim fold:

js-beautify and vim fold

Ответ 4

Добавить ответ, чтобы ответить Джеймс Лай. Первоначально мой foldmethod = синтаксис, поэтому zfat не будет работать. Решение состоит в том, чтобы установить foldemethod на ручной

:setlocal foldmethod=manual

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

:setlocal foldmethod?

Ответ 5

Складной html с синтаксисом foldmethod, который проще.

Этот ответ основан на синтаксисе синтаксиса HTML в vim. автор - @Ingo Karcat.

  • установите ваш метод fold как синтаксис со следующим:

    Командная строка vim :set foldmethod=syntax

    или установите значение в ~/.vim/after/ftplugin/html.vim

    setlocal foldmethod=syntax
    
  • Также обратите внимание, что синтаксис по умолчанию script только сбрасывает многострочный тег, а не текст между тегом открытия и закрытия.

        So, this gets folded:
    
            <div
                class="foo"
                id="bar"
            > 
    
        And this doesn't
    
            <div>
                <b>text between here</b>
            </div>
    
  • Чтобы свернуть между тегами, вам нужно расширить синтаксис script, через следующее, лучшее место в ~/.vim/after/syntax/html.vim

    Сгибание синтаксиса выполняется между всеми элементами, кроме void html (те, у которых нет закрывающего брата, например <br>)

    syntax region htmlFold start="<\z(\<\(area\|base\|br\|col\|command\|embed\|hr\|img\|input\|keygen\|link\|meta\|para\|source\|track\|wbr\>\)\@![a-z-]\+\>\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d
    

Ответ 6

Сначала set foldmethod=syntax и попробуйте zfit сбросить начальный тег и zo, чтобы разворачивать теги, он хорошо работает на моем vim.