我有一些带有大括号代码块的源代码
我希望能够折叠前面有一些if
条件的块,然后展开其他代码块。
示例输入:
print "this is a test"
if a == b {
{ x = 1
y = 2
z = 3
}
k = [1, 2, 3]
}
{ l = 5 }
return "foo"
预期产出:
print "this is a test"
if a == b {
+-- 6 lines:
}
{ l = 5 }
return "foo"
有什么建议吗?
答案 0 :(得分:4)
假设if'关闭'}'大括号位于一行的开头,你可以使用:
:g/if.*{/+,/^}/-fold
这会折叠if的{}括号内的语句,不包括大括号本身。
这是通过在定义g 范围的模式之后放置的+和 - 移动来实现的(模式之间存在彗差):+从第一个匹配的模式向下移动一行(/if.*{/)和 - 从第二个匹配模式(/ ^} /)中移动范围一行
如果您缩进了'}'大括号或任何上述命令不适用的情况,您可以尝试寻找可以利用的其他模式,并根据需要更改上面的ex命令。