Ini 'foldmethod'
adalah opsi jendela-lokal; pengaturan dari Anda ~/.vimrc
tidak selalu memiliki efek yang tepat.
Karena lipatan sintaks terikat pada html
filetype , pengaturan ini milik ~/.vim/after/ftplugin/html.vim
:
setlocal foldmethod=syntax
Ini tergantung pada milik filetype plugin on
Anda ~/.vimrc
, yang mungkin Anda miliki. Anda juga dapat mengonfigurasi opsi terkait lainnya di sana, mis foldcolumn=4
.
Perhatikan juga sejauh ini (pada Vim 7.4.1830), skrip sintaks HTML default hanya melipat tag multi-baris itu sendiri, bukan teks antara tag pembuka dan penutup .
Jadi, ini terlipat:
<div
class="foo"
style="width: 100"
>
Tetapi ini tidak:
<div>
<b>stuff in between</b>
</div>
Untuk mendapatkan ini, Anda perlu memperluas skrip sintaksis, misalnya melalui yang berikut ini, ditempatkan ke ~/.vim/after/syntax/html.vim
:
Alternatif 1
Lipat dilakukan antara semua kecuali elemen html batal (yang tidak memiliki saudara kandung, seperti <br>
). Dikontribusikan oleh @zanona; Terima kasih!
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
Alternatif 2
Lipat dilakukan antara struktural tertentu (misalnya <head>
), tingkat paragraf (misalnya <p>
, <li>
) dan <script>
tag HTML tambahan (misalnya ).
syntax region htmlFold start="<\z(p\|h\d\|i\?frame\|table\|colgroup\|thead\|tfoot\|tbody\|t[dhr]\|pre\|[diou]l\|li\|span\|div\|head\|script\|style\|blockquote\|form\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d