gpt4 book ai didi

Vim 折叠特定文本 block

转载 作者:行者123 更新时间:2023-12-04 22:15:08 24 4
gpt4 key购买 nike

我对 Vim 折叠很陌生。但它看起来非常有趣。我有一个这样的评论块。 (分号是注释运算符)。

; START ANALYSIS
;
; Check for validity of data file
; ....
; Text
; Text...etc
;
; END ANALYSIS

我怎样才能折叠这个?什么 foldmethod最适合它?

我试过 foldmethodindentexpr没有太大的成功。 syntax foldmethod 看起来很吓人。

任何人都可以帮忙吗? (顺便说一句,文件类型是 idlang )。

最佳答案

只要这是您想要折叠的唯一块,这很容易。

选项A

一种方法是重新定义折叠标记(默认为 {{{/}}})以使用块中的文本:

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

关于Vim 折叠特定文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com