我对Vim折叠很新.但它看起来很有趣.我有这样的评论块. (分号是注释运算符).
; START ANALYSIS ; ; Check for validity of data file ; .... ; Text ; Text...etc ; ; END ANALYSIS
我怎么折这个?什么foldmethod最适合它?
我尝试了缩进和expr的折叠方法没有太大的成功.语法foldmethod看起来令人生畏.
有人可以帮忙吗? (顺便说一句,文件类型是idlang).
解决方法
只要这是您想要折叠的唯一块,这很容易.
选项A.
一种方法是重新定义foldmarkers(默认为{{{/}}})以使用块中的文本:
setlocal foldmethod=marker foldmarker=START\ ANALYSIS,END\ ANALYSIS
选项B.
您还可以使用折叠表达式,然后执行字符串(或正则表达式)比较:
setlocal foldmethod=expr foldexpr=getline(v:lnum)==';\ START\ ANALYSIS'?'>1':getline(v:lnum)==';\ END\ ANALYSIS'?'<1':'='
条件看起来很难,也因为它是在线编写的.作为扩展函数,它看起来像:
function! FoldAnalysis( line ) if a:line == '; START ANALYSIS' " A level 1 fold starts here; cp :help fold-expr return '>1' elseif a:line == '; END ANALYSIS' " A level 1 fold ends here return '<1' else " Use fold level from prevIoUs line return '=' endif endfunction setlocal foldmethod=expr foldexpr=FoldAnalysis(getline(v:lnum))
选项C.
如果想要在原始文件类型的折叠之上进行此折叠,则必须使用文件类型定义的内容(通常基于语法),并对其进行扩展.
安装
要使这些持久化,请将命令放在〜/ .vim / after / ftplugin / idlang.vim中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。