用于HTML5 Boilerplate CSS的Vim折叠?

时间:2013-09-18 17:05:13

标签: vim

HTML5 Boilerplate CSS(至少通过initializr)有标记部分的注释,如下所示:

/* ==========================================================================
   HTML5 Boilerplate styles - h5bp.com (generated via initializr.com) 
   ========================================================================== */

有没有办法让vim将这些识别为折叠部分,以便:

  • /* ===的第一行被认为是折叠的开头
  • 第二行,即HTML5 Boilerplate styles - h5bp...是折叠的名称
  • 它会折叠所有CSS,直到下一个标题

我知道我可以将{{{1放在这些评论的第二行,但它看起来仍然有些混乱。

2 个答案:

答案 0 :(得分:3)

你想要什么是完全可能的,但很特别,因此我只给你一般提示,而不是一个完整的解决方案。

对于折叠,它取决于您有哪些其他折叠要求。您是否仍想折叠单个CSS定义(即{ ... }块)?一般情况下(除非您使用明确的折叠标记),您可以syntax使用expr'foldmethod'

例如,CSS syntax by JulesWang已经支持一些折叠;您必须为您的样板部件扩展(通过:syntax region ... fold)(并将其放入~/.vim/after/syntax/css.vim)。

或者,您可以编写自定义'foldexpr'; :help fold-expr告诉你如何。

对于折叠的名称,由'foldtext'设置确定,与'foldexpr'一样,持续评估Vimscript表达式。它是这样的,它检查样板块的开始,然后返回下一行,或者回到默认值:

getline(v:foldstart) =~# '^\s*/\* =\+' ? getline(v:foldstart + 1) : foldtext()

答案 1 :(得分:0)

setlocal foldmethod=marker
setlocal foldmarker=/*,*/

应该有效,但会限制你对评论的折叠能力。

如果您对此感到满意,可以将这些行添加到:

~/.vim/after/ftplugin/css.vim

对于更智能的折叠,我建议观看this screencast by Drew Neil