2

在 Vim 中遇到了 CSS 的这种自定义折叠,并受到它的启发,我试图制作自己的折叠方式,但结果略有不同。我不得不放弃,因为我无法让搜索模式在折叠功能中起作用。对我来说并不奇怪,因为我是一个 Vim 初学者 :)

任何有助于实现以下目标的帮助将不胜感激。

  • 为了便于阅读,我使用空行进行分隔。此外,它还支持使用 Vim}{.

  • 我将每个选择器放在自己的行上。

  • 我将声明分组为部分,这些部分通常是嵌套的。

样本输入为:

/* # Globals
===================================== */

...

/* ## Lists
------------------------------------- */

ol,
ul {
  margin-top: 1.6154em; /*21px*/
  /* Some other comment */
  list-style-position: outside;
}

dl,
dl > some .very.long + selector:not-fitting[on=screen] {
  ...

我想要:

  1. 根据其水平折叠部分。

    部分级别由数字表示#,因此在上面的示例中,“全局”应该具有折叠级别 1 和“列表”-- 2。也可以有第三个级别。

    部分的折叠文本不应包含任何#.

  2. 在第一个选择器处开始折叠声明。

  3. 在声明的右大括号之后的最后一个空行处结束折叠 }

  4. 在折叠文本中显示所有选择器。

    如果它们不适合窗口,则显示那些适合的和未显示的计数。

我将使用上面提供的示例对其进行说明。

使用时:set foldmethod=marker产生:set foldmarker={,}的折叠是:

ol,
+----  5 lines: ul -------------------------

dl,
+----  x lines: dl > some .very.long ...----

我希望它是(注意折叠之间没有空线):

+---- ol, ul -------------------------------
+---- dl ---------------------------[1]-----
4

1 回答 1

0

检查我为 SO 编写的CSS 折叠插件。它应该很容易根据您的需要进行改进。您将不得不测试当前行周围的行——检测所有大括号并缓存它们可能更有效,以便知道何时查找连续行。

于 2010-07-09T15:27:30.820 回答