2011-08-22 10 views
47

Czy jest jakaś wtyczka do składania znaczników HTML w Vim?
Czy istnieje inny sposób ustawienia skrótu do składania lub rozwijania znaczników html?
Chciałbym składać/rozwijać znaczniki html, tak jak robię to z zaginaniem wcięć.Jak złożyć/rozwinąć znaczniki HTML za pomocą Vima

+0

'set foldmethod = syntax' działa dla HTML –

Odpowiedz

69

Znalazłem zfat (lub, równie dobrze, zfit) działa dobrze na składanie dokumentów HTML. za będzie przełączać (otwierać lub zamykać) istniejącą fałdę. zR otwiera wszystkie fałdy w bieżącym dokumencie, zM skutecznie ponownie włącza wszystkie istniejące fałdy zaznaczone w dokumencie.

Jeśli znajdziesz się za pomocą fałdy intensywnie, można zrobić kilka przydatnych skrótów klawiszowych dla siebie w swojej .vimrc.

+0

Twoja odpowiedź działa tylko na metodzie foldm instrukcji i nie może działać na innych metodach foldmethod. – soarinblue

14

Jeśli wciąć kod HTML następujące powinny działać:

set foldmethod=indent 

Problem polega na tym, że znaleźć, czy istnieje zbyt wiele zagięć. Aby obejść ten problem, używam zO i do otwierania i zamykania zagnieżdżonych zagięć.

Zobacz help fold-indent uzyskać więcej informacji:

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. 
+0

Spróbuj ustawić fdl = 3, aby domknąć fałdy trzeciego poziomu i wyżej; zc nadal zamyka otwarte fałdy. – JRG

3

Instalacja polecenia js-beautify (wersja 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-beautif y i vim-krotnie:

js-beautify and vim fold

2

Dodaj do odpowiedzi przez Jamesa Lai. Początkowo moja składnia = składnia, więc zfat nie będzie działał. Rozwiązanie jest ustawienie foldemethod do ręcznego

:setlocal foldmethod=manual 

aby sprawdzić, które foldmethod w użyciu,

:setlocal foldmethod? 
2

Składany html z foldmethod składni, która jest prostsza. Ta odpowiedź jest oparta na HTML syntax folding in vim. autorem jest @Ingo Karcat.

  1. ustawiona metoda krotnie do składnia z następujących czynności:

    linii poleceń vim :set foldmethod=syntax

    lub umieścić ustawienie w ~/.vim/after/ftplugin/html.vim

    setlocal foldmethod=syntax 
    
  2. również pamiętać, tak jak dotąd, Domyślny skrypt składniowy powoduje złożenie tylko wieloliniowego znacznika , a nie tekstu między znacznikiem otwierającym i zamykającym.

    So, this gets folded: 
    
         <div 
          class="foo" 
          id="bar" 
         > 
    
        And this doesn't 
    
         <div> 
          <b>text between here</b> 
         </div> 
    
  3. Aby złożyć pomiędzy znacznikami, trzeba rozszerzyć skrypt składni, poprzez następujące, najlepsze miejsce do ~/.vim/after/syntax/html.vim

    Składanie składnia jest wykonywana między wszystkich, ale pustych elementów HTML (te, które don „t ma rodzeństwa zamknięcia, jak <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 
    
0

pierwsze set foldmethod=syntax i spróbuj zfit, aby spiąć znacznik początkowy i zo, aby rozwinąć znaczniki. Działa to dobrze na moim vimie.

Powiązane problemy