我有一个 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/