我想在开始标记之间折叠文本:
//// Block 1
... some code 1 ...
//// Block 2
... some code 2 ...
Run Code Online (Sandbox Code Playgroud)
在此处////将用作开始标记,并且折叠//// Block 1将折叠到之前的行//// Block 2。
这有可能吗?
如果我foldmarker没有设置结束参数就不喜欢它,并且如果////同时用作开始和结束标记,它会折叠太多。
我可以使用手动创建折叠zf,但是这些折叠取决于文件,如果您更改它,它们会折断。
您可以像这样编写自己的折叠表达式:
function! BlockFolds()
let thisline = getline(v:lnum)
if match(thisline, '^\/\/\/\/ Block') >= 0
return ">1"
else
return "="
endif
endfunction
setlocal foldmethod=expr
setlocal foldexpr=BlockFolds()
Run Code Online (Sandbox Code Playgroud)
如果你在 vim 中获取它,你将得到想要的效果:
.vimrc显然,您可以在您的或基于文件扩展名中获取它。您可以在此处了解自定义折叠表达式的工作原理:http ://vimcasts.org/episodes/writing-a-custom-fold-expression/