为vim语法折叠添加标记

时间:2015-08-12 11:13:16

标签: vim syntax folding

我通常用C语言编写代码,而我的.vimrc set foldmethod=syntax代码很好,因为它可以折叠大括号和注释以及所有内容。

但有时我需要折叠大块代码,以免它们妨碍我(例如一组相关函数),而我通常使用set foldmethod=marker和标记{ {1}}和>>>

我一直试图添加一个新的同步区域,我最近的东西是:

<<<

但这会造成混乱,因为它与评论相匹配。

有没有办法实现这两个目标?或者我应该放弃使用语法执行此操作,只需为大括号,注释和自定义标记设置标记?

提前致谢

2 个答案:

答案 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添加了此功能

相关问题