LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1114|回复: 1

请教:vim能不能按照c语法折叠?

[复制链接]
发表于 2006-4-6 15:18:30 | 显示全部楼层 |阅读模式
看代码的时候,合理的使用折叠能够在复杂冗长的代码中,很快的搞清楚逻辑关系。

但是vim的默认折叠方式,我使用的比较多的是按照缩进折叠,这并不十分好用,特别是在一些代码不是按照统一格式缩进的时候。(比如有的按照2个空格缩进,有的按照4个),或者是代码中有些#ifdef #endif的时候。

请问能够设置vim按照c语言语法折叠吗?如果可以的话应该如何设置?
 楼主| 发表于 2006-4-6 15:34:57 | 显示全部楼层
问题解决了,在.vimrc中加入如下代码即可实现按照括号折叠:
" Folding function definition
function MyFoldfun(lineNum)
    if getline(a:lineNum+1)=~'^{'
        return 'a1'
    elseif getline(a:lineNum-1)=~'^}'
        return 's1'
    elseif getline(a:lineNum)=~'.\+{'
        return 'a1'
    elseif getline(a:lineNum)=~'.\+}'
        return 's1'
    else
        return '='
    endif
endfunction

" Folding setting comes here
if has("autocmd")
    augroup cprog
        autocmd FileType c,cpp,sed,awk,pl  set formatoptions=croql cindent comments=sr:/*,mb:*,el:*/,:// expandtab foldcolumn=4 foldmethod=expr foldexpr=MyFoldfun(v:lnum)
    augroup END
else
    set foldcolumn=4
    set foldmethod=expr
    set foldexpr=MyFoldfun(v:lnum)
endif
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表