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

Vim在特定文本块处折叠

我对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] 举报,一经查实,本站将立刻删除。

相关推荐