2011-08-22 18 views
47

Có một số plugin để gấp thẻ HTML trong Vim không?
Hoặc có một cách khác để thiết lập lối tắt để gấp hoặc mở thẻ html?
Tôi muốn gấp/mở thẻ html giống như tôi làm với gấp thụt đầu dòng.Làm cách nào để gấp/mở thẻ HTML bằng Vim

+0

'đặt foldmethod = syntax' hoạt động đối với HTML –

Trả lời

69

Tôi đã tìm thấy zfat (hoặc, bằng nhau, zfit) hoạt động tốt để gấp với tài liệu HTML. za sẽ chuyển đổi (mở hoặc đóng) một nếp gấp hiện có. zR mở tất cả các nếp gấp trong tài liệu hiện tại, zM kích hoạt lại hiệu quả tất cả các nếp gấp hiện có được đánh dấu trong tài liệu.

Nếu bạn thấy mình sử dụng nếp gấp rộng rãi, bạn có thể làm cho một số keybindings ích cho chính mình trong bạn .vimrc.

+0

Câu trả lời của bạn chỉ hoạt động trên phương pháp đo góc của hướng dẫn sử dụng và không thể hoạt động trên các phương pháp gấp nếp khác. – soarinblue

14

Nếu bạn thụt HTML của bạn sau nên làm việc:

set foldmethod=indent 

Vấn đề với điều này, tôi tìm thấy, có quá nhiều nếp gấp. Để giải quyết vấn đề này, tôi sử dụng zOzc để mở và đóng các nếp gấp lồng nhau tương ứng.

Xem help fold-indent để biết thêm thông tin:

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

Thử đặt fdl = 3 để đóng các nếp gấp cấp ba và cao hơn theo mặc định; zc vẫn đóng các nếp gấp đã mở. – JRG

3

Install js-beautify lệnh (JavaScript phiên bản)

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 và vim gấp:

js-beautify and vim fold

2

Thêm vào để trả lời bởi James Lai. Ban đầu cú pháp foldmethod = zfat của tôi sẽ không hoạt động. Giải pháp là để thiết lập foldemethod để thủ

:setlocal foldmethod=manual 

để kiểm tra foldmethod sử dụng,

:setlocal foldmethod? 
2

Folding html với cú pháp foldmethod, đó là đơn giản hơn.

Câu trả lời này được dựa trên HTML syntax folding in vim. tác giả là @Ingo Karcat.

  1. thiết lập phương pháp lần bạn được cú pháp như sau:

    dòng lệnh vim :set foldmethod=syntax

    hoặc đặt các thiết lập trong ~/.vim/after/ftplugin/html.vim

    setlocal foldmethod=syntax 
    
  2. Cũng lưu ý cho đến nay, tập lệnh cú pháp mặc định chỉ gấp một thẻ nhiều dòng, chứ không phải văn bản giữa thẻ mở và đóng.

    So, this gets folded: 
    
         <div 
          class="foo" 
          id="bar" 
         > 
    
        And this doesn't 
    
         <div> 
          <b>text between here</b> 
         </div> 
    
  3. Để gấp giữa các thẻ, bạn cần mở rộng kịch bản cú pháp, qua sau, nơi tốt nhất vào ~/.vim/after/syntax/html.vim

    Các gấp cú pháp được thực hiện giữa tất cả ngoại trừ yếu tố html trống (những người mà don 't có một anh chị em đóng cửa, như <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

Thứ nhất set foldmethod=syntax và thử zfit để mở thẻ bắt đầu và zo để mở thẻ, Nó hoạt động tốt trên vim của tôi.