我在vim中有此设置
foldmarker={{{,}}}
commentstring=/*%s*/
foldmethod=marker
我想使用zf
创建新的标记,
void foo(void bar) {
}
当我选择它并按zf
时,我会得到
void foo(void bar) {/*{{{*/
}/*}}}*/
到目前为止,一切都很好。但是,当函数定义包含指针时,例如
void foo(void * bar) {
}
我知道
void foo(void * bar) {{{{
}/*}}}*/
这是错误的。如何配置vim即使在第二种情况下也能正常工作?
答案 0 :(得分:2)
这种奇怪的行为是由:help 'comments'
选项的默认值引起的,尤其是mb:*
部分。
To avoid recognizing "*ptr" as a comment, the middle string includes the 'b' flag.
不幸的是,您编写指针的方式(*
之后的空白)破坏了这种启发式方法,Vim将*
检测为三段式注释的中间部分(Vim不会确认前面确实有一个起始件),并假定折页起始点已是注释的一部分,因此跳过在该处添加'commentstring'
。
要解决此问题,请改编您的编码样式(编写void *bar
),或修改'comments'
选项,例如通过移除(或精炼)中间部分:
setlocal comments-=mb:*
如果需要保持中间部分和正确的手动折叠,则必须在zf
周围编写一个小的包装映射,以临时更改该选项。