vim - 如何在 VIM 中折叠 YAML 项目?

标签 vim yaml folding

我有一个 YAML 格式的文本文件,并且想为 VIM 定义自定义折叠,但我不知道如何去做(尽管阅读了有关折叠的 VIM 文档)。该文件由 YAML“文档”组成,如下所示:

---
title: My Title
attr1: value1
attr2: value2
---
title: Next Item
attr1: value3
---
title: One More Item
...

我希望生成的折叠文本看起来像这样:

+---- 2 lines: My Title ----
+---- ? lines: Next Item ---

如有任何建议,我们将不胜感激!谢谢!

最佳答案

%s/---\(.*\)\(\_.\{-}title: \)\(.*\)/---\1 #{{{1 \3\2\3/g
set foldmethod=marker

%s/\(---\_.\{-}title: \)\(.*\)/#{{{1 \2\r\1\2/g
set foldmethod=marker

这会将带有标题的注释添加到每个 YAML 文档的开头,并使文档仍然有效。折叠标记选项必须保持不变。

结果:

1.

--- #{{{1 My Title
title: My Title
attr1: value1
attr2: value2
--- #{{{1 Next Item
title: Next Item
attr1: value3
--- #{{{1 One More Item
title: One More Item
...

折叠:

+--  4 строк: --- My Title-----------------------------
+--  3 строк: --- Next Item----------------------------
+--  3 строк: --- One More Item------------------------

2.

#{{{1 My Title
---
title: My Title
attr1: value1
attr2: value2
#{{{1 Next Item
---
title: Next Item
attr1: value3
#{{{1 One More Item
---
title: One More Item
...

折叠:

+--  5 строк: My Title--------------------------------
+--  4 строк: Next Item-------------------------------
+--  4 строк: One More Item---------------------------

关于vim - 如何在 VIM 中折叠 YAML 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3212248/

相关文章:

vim 临时禁用撤消?

php - 特定文件类型的 Vim inoremap

javascript - 从 YAML 生成 javascript 类/对象

vim - `set foldmethod=syntax`让vim变慢,`set foldmethod=indent`不够好,怎么办?

bash - 如何在 Vim 中获得代码折叠以使 shell 脚本正常工作

python - emacs 中 python 代码折叠的范围

vim:加载插件后启动命令

macos - 无法在vim中显示所有字符

python - 将 YAML 文件中的数据加载到 python 中的变量中

python - 和有什么区别!和 !!在 yaml 中?