2011-08-22 27 views
47

Vim'de HTML etiketlerini katlamak için bazı eklenti var mı?
Veya html etiketlerini katlamak veya açmak için bir kısayol oluşturmanın başka bir yolu var mı?
Aynen katlamada olduğu gibi html etiketlerini katlamak/açmak istiyorum.Vim ile HTML etiketlerini katlama/açma

+0

'set foldmethod = sözdizimi HTML için çalışıyor –

cevap

69

Ben HTML belgeleri ile katlama için iyi çalışır (eşit, zfit veya) zfat bulduk. za mevcut bir katlamayı açar (açar veya kapatır). zR, geçerli belgedeki tüm katlamaları açar, zM belgedeki tüm mevcut katlamaları etkin bir şekilde yeniden etkinleştirir. Eğer yoğun kıvrımlar kullanarak kendiniz bulursanız

, içeri kendiniz için bazı kullanışlı tuş atamaları Yapabilir .vimrc.

+0

Yanıtınız yalnızca kılavuzun katlama yönteminde çalışır ve diğer katlama yöntemlerinde çalışmaz. – soarinblue

14

HTML'nizi girinti, aşağıdaki çalışması gerekir: bununla

set foldmethod=indent 

sorunu, ben bulmak, çok fazla kat var. Bunu aşmak için sırasıyla iç içe kıvrımları açmak ve kapatmak için zO ve zc kullanın.

fazla bilgi için help fold-indent bakınız:

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

Üçüncü düzey katlamaları kapatmak için varsayılan olarak fdl = 3 ayarını deneyin; zc hala açılmış katları kapatır. – JRG

3

js-beautify komutu takın (JavaScript sürümü)

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 ve vim kat:

js-beautify and vim fold

2

James Lai tarafından cevap üzerine ekleyin. Başlangıçta benim foldmethod = sözdizimi, zfat çalışmayacak. Çözüm

:setlocal foldmethod? 
2

, kullanımda foldmethod hangi kontrol etmek manuel

:setlocal foldmethod=manual 

için foldemethod ayarlamak basittir foldmethod sözdizimi, katlanır html 'dir.

Bu yanıt HTML syntax folding in vim dayanmaktadır. yazarı @Ingo Karcat.

  1. senin kat yöntemi ile söz diziminde şekilde ayarlanacak aşağıdadır:

    vim komut satırı :set foldmethod=syntax

    veya ayarı koymak

    setlocal foldmethod=syntax 
    
  2. ~/.vim/after/ftplugin/html.vim da şimdiye kadar, dikkat varsayılan sözdizimi betiği sadece açılış ve kapanış etiketi arasındaki metni değil, çok satırlı bir etiketini katlar.

    So, this gets folded: 
    
         <div 
          class="foo" 
          id="bar" 
         > 
    
        And this doesn't 
    
         <div> 
          <b>text between here</b> 
         </div> 
    
  3. etiketleri arasına katlanmış olacağı için, ~/.vim/after/syntax/html.vim

    sözdizimi katlama tüm ama geçersiz html elemanları arasında gerçekleştirilir (o don içine, aracılığıyla, en iyi yer aşağıdakileri sözdizimi komut uzatmak gerek 't) <br> gibi, ilk olarak

    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

bir kapatma kardeşi vardırve başlangıç ​​etiketi ve zo etiketlerini katlamak için zfit'u deneyin, Vim'de iyi çalışır.

İlgili konular