微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有末端标记的Vim折叠

我想在开头标记之间折叠文字,例如:

//// Block 1

... some code 1 ...

//// Block 2

... some code 2 ...

其中////将用作开始标记并折叠////块1将折叠到////块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中获取它,您将获得所需的效果

demo

显然,您可以在.vimrc中或基于文件扩展名来源它.
您可以在此处了解自定义折叠表达式的工作原理:http://vimcasts.org/episodes/writing-a-custom-fold-expression/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐