我目前正在编辑一个类似于
的twp函数的C ++文件int func_name_1(int param) {
do_stuff();
and_more();
}
int func_name_2(int param) {
do_different_stuff();
STRUCT_TYPE s = {5, 8, 10, 12};
do_something_with(s);
}
如果我对单词zc
执行func_name_1
,vim会按预期折叠该函数,以便现在看起来像
int func_name_1(int param) {--------------------
然而,在func_name_2
上,函数折叠如下:
int func_name_2(int param) {---------------------
do_something_with(s);
}
这不是我想要的。由于某种原因,在一条线上打开和关闭{}似乎会扰乱折叠算法。
如果有人知道我怎么能得到一个“更好”的折叠,我会欣赏任何正确的方向。
编辑我认为与此问题相关的选项在我的缓冲区中设置如此
set foldmarker={,}
set foldmethod=marker
set foldtext=getline(v:foldstart)
编辑II :如果我将开启和关闭{...}的行改为STRUCT_TYPE s = { 5, 8, 10, 12};
(注意{
之后的空格),那么折叠按预期工作。
答案 0 :(得分:3)
哦......我明白了....
:help fold-marker
告诉我:标记可以包含一个级别[..]以下数字指定折叠
水平
所以,5
在{
指定折叠级别之后立即{{1}},这搞砸了。
答案 1 :(得分:0)
zc
命令关闭当前折叠。您可能创建了一个可以关闭它的文件夹,因此您的问题在于创建折叠而不是关闭它。
要创建折叠,请使用zf
或zF
。 zf
适用于可视模式,也适用于zf2j
之类的动作,可在2行上创建折叠。 zF
已经以“线路”的方式运作。
在您的情况下,最实用的方法是将光标放在括号上(例如使用f{
)并运行zf%
以创建并关闭转到匹配括号的折叠。无论如何,如果那个括号在另一条线上会更加实用(所以你可以用]]
去它)但这是一个超出这个答案范围的约定: - )