我想在开始标记之间折叠文本,例如:
//// Block 1
... some code 1 ...
//// Block 2
... some code 2 ...
哪里
////
将用作开始标记和折叠 //// 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()
如果您在 vim 中使用它,您将获得所需的效果:
显然你可以在你的
.vimrc
中找到它。或基于文件扩展名。您可以在此处了解自定义折叠表达式的工作原理:http://vimcasts.org/episodes/writing-a-custom-fold-expression/
关于Vim 折叠没有结束标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34373627/