Saya bertanya-tanya mana yang merupakan cara terbaik untuk menggunakan sintaks lipat untuk file HTML. Khususnya jika dapat mengenali kode javascript di dalam <script>
tag.
Saya mengetik set foldmethod=syntax
tetapi tampaknya tidak melakukan pelipatan. Apakah saya harus menambahkan sesuatu ke .vimrc saya?
Saya tahu untuk javascript, misalnya, saya perlu menambahkan let javaScript_fold=1
tetapi saya tidak yakin apakah saya harus menambahkan sesuatu yang serupa untuk HTML.
Terima kasih!
folding
filetype-html
Sergio
sumber
sumber
Jawaban:
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
:Ini tergantung pada milik
filetype plugin on
Anda~/.vimrc
, yang mungkin Anda miliki. Anda juga dapat mengonfigurasi opsi terkait lainnya di sana, misfoldcolumn=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:
Tetapi ini tidak:
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!Alternatif 2
Lipat dilakukan antara struktural tertentu (misalnya
<head>
), tingkat paragraf (misalnya<p>
,<li>
) dan<script>
tag HTML tambahan (misalnya ).sumber
expr
metode khusus yang saya gunakan, namun menonaktifkan sintaks lipat untuk css dan javascript. Saat menggunakansyntax
javascript dan css memiliki lipatan seperti yang diharapkan tetapi tidak ada tag HTML yang melakukannya? Ada ide?fold
di dalamnya.