我对Vim折叠很新。但它看起来很有趣。我有这样的评论块。 (分号是注释运算符)。
; START ANALYSIS
;
; Check for validity of data file
; ....
; Text
; Text...etc
;
; END ANALYSIS
我该如何折叠? foldmethod
最适合它的是什么?
我已尝试foldmethod
indent
和expr
但未取得多大成功。 syntax
foldmethod看起来令人生畏。
有人可以帮忙吗? (顺便说一下,文件类型是idlang
)。
答案 0 :(得分:2)
只要这是你想折叠的唯一一块,这很容易。
一种方法是重新定义倍数标记(默认为{{{
/ }}}
)以使用块中的文本:
setlocal foldmethod=marker foldmarker=START\ ANALYSIS,END\ ANALYSIS
您还可以使用折叠表达式,然后进行字符串(或正则表达式)比较:
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))
如果想要在原始文件类型的折叠的顶部上进行折叠,则必须使用文件类型定义的内容(通常是基于语法的),并扩展它。
要使其中的任何一个持久化,请将命令放在~/.vim/after/ftplugin/idlang.vim
答案 1 :(得分:1)
由于没有语法或缩进,您无法使用这些折叠方法四个评论。相反,你可以使用标记
; START ANALYSIS {{{
;
; Check for validity of data file
; ....
; Text
; Text...etc
;
; END ANALYSIS }}}
{{{
和}}}
将成为您的标记。然后你可以set foldmethod=marker
。
使用:help marker
获取更多信息。
答案 2 :(得分:0)
只需使用鼠标选择或正常选择选择要折叠的线条,然后键入zf
以折叠选定的线条,然后键入zo
以展开相同的线条。