Vim在特定文本块处折叠
发布时间:2020-12-15 21:02:21 所属栏目:安全 来源:网络整理
导读:我对Vim折叠很新.但它看起来很有趣.我有这样的评论块. (分号是注释运算符). ; START ANALYSIS;; Check for validity of data file; ....; Text ; Text...etc;; END ANALYSIS 我怎么折这个?什么foldmethod最适合它? 我尝试了缩进和expr的折叠方法没有太大的
我对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中 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |