我通常用C语言编写代码,而我的.vimrc set foldmethod=syntax
代码很好,因为它可以折叠大括号和注释以及所有内容。
但有时我需要折叠大块代码,以免它们妨碍我(例如一组相关函数),而我通常使用set foldmethod=marker
和标记{ {1}}和>>>
。
我一直试图添加一个新的同步区域,我最近的东西是:
<<<
但这会造成混乱,因为它与评论相匹配。
有没有办法实现这两个目标?或者我应该放弃使用语法执行此操作,只需为大括号,注释和自定义标记设置标记?
提前致谢
答案 0 :(得分:0)
好吧,在...尝试用语法折叠做5个小时之后,我已经放弃并改为表达式折叠。
关注这个问题:LLVM-IR syntax folding for vim我创建了一个折叠函数,或多或少地做了我想要的事情:
function! CFold()
let this_line = getline(v:lnum)
" Matching of braces
if match(this_line, '}') >= 0
return 's1'
elseif match(this_line, '{$') >= 0
return 'a1'
" Matching of comments
elseif match(this_line, '/\*') >= 0
if match(this_line, '\*/$') == -1
return 'a1'
" Matching custom folding
elseif match(this_line, '>>>') >= 0
return 'a1'
elseif match(this_line, '<<<') >= 0
return 's1'
endif
elseif match(this_line, '\*/$') >= 0
return 's1'
endif
return '='
endfunction
setlocal foldmethod=expr
setlocal foldexpr=CFold()
答案 1 :(得分:0)
插件syntaxMarkerFold添加了此功能