Как сложить / развернуть теги HTML с помощью Vim - PullRequest
56 голосов
/ 22 августа 2011

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

Ответы [ 6 ]

76 голосов
/ 12 сентября 2012

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

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

18 голосов
/ 30 июня 2013

Если вы отступите в 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.
4 голосов
/ 09 июля 2016

Сворачивание html с синтаксисом foldmethod, что проще.

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

  1. установите ваш метод свертывания как синтаксис со следующим:

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

    или поместитеустановка в ~/.vim/after/ftplugin/html.vim

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

        So, this gets folded:
    
            <div
                class="foo"
                id="bar"
            > 
    
        And this doesn't
    
            <div>
                <b>text between here</b>
            </div>
    
  3. Чтобы сложить теги, вам нужно расширить синтаксический скрипт с помощью следующего лучшего места в ~/.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
    
3 голосов
/ 16 октября 2013

Установить 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 оригинальный HTML:

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

JS-Beautify и Vim Fold:

js-beautify and vim fold

2 голосов
/ 15 февраля 2014

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

:setlocal foldmethod=manual

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

:setlocal foldmethod?
1 голос
/ 03 октября 2017

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

...