怎样在vim中实现代码折叠功能

问题:怎样在vim中实现代码折叠功能?

解决方法:直接使用vim自带的快捷键和命令,便可以实现功能强大的折叠

小试折叠:

1 :set fdm=marker 在vim中执行该命令
2 5G 将光标跳转到第5行
3 zf10G 折叠第5行到第10行的代码,vim会在折叠的开始和结束自动添加三个连续的花括号作为标记
4 zR 打开所有折叠
5 zM 关闭所有折叠
6 zE 删除所有的折叠标签
7 退出vim窗口再次打开,执行2-6步。依然可以折叠,但是没有标记了。重新打开后折叠信息会丢失。

折叠方法:

1 manual (不常用)默认折叠方法,如上面第7步即为该方法,关闭vim折叠会丢失。如果想保持折叠信息,可运行 :mkview 命令,重启后用 :loadview 命令回复。该命令生成的缓存文件位于 ~/.vim/view 文件夹中。移动或重命名文件,折叠信息依然会丢失。
2 indent (常用)缩进折叠方法,相同的缩进中代码会被折叠。
3 syntax (不常用)语法高亮折叠,在c/c++中会折叠花括号部分,其它格式代码中有的不能自动折叠。
4 marker (常用)标记折叠方法,如上面1-6所使用的方法。关闭vim折叠信息不会丢失,而且易用控制和标注。
5 还有两种 diff 和 expr,目前我还没有用过。

具体介绍:

1 以 marker 为例,可以在vim中运行 :set fdm=marker 来设置折叠方法设置。折叠方法的时候,= 两边不能有空格。也可以将该命令添加到~/.vimrc中,实现vim自动加载。
2 在使用小试折叠中 2 3 步折叠的时候,vim会自动添加三个连续的花括号作为标记,可在开始的花括号前添加介绍,花括号后添加级别号,级别号不能为0。如:/折叠介绍{{{1/
/}}}/
3 级别的定义稍显复杂。在一般编码中,通常把不需要修改的代码添加标记折叠。没有必要在给折叠分等级。如果想快速折叠就切换为indent折叠方面,适用于任何有缩进的代码。

折叠命令:

1 zf 创建折叠,可以按照前面的方式进行折叠,也可以选中代码后进行折叠。
2 zF 在当前行创建折叠。当一开始就计划要折叠所写代码的时候,可以用该命令创建一对折叠符号,然后再往里面填写内容。
3 :5,10fo 在vim中运行该命令会在折叠 5-10 行中的代码,可以用其它数字代替之。
4 zd 删除光标下的折叠。
5 zD 删除光标下的折叠,以及嵌套的折叠。
6 zE 删除窗口内的所有折叠。仅当 manual 和 marker 折叠方法下有效。

打开和关闭折叠:

1 zo 打开光标下的折叠。
2 zO 打开光标下的折叠,以及嵌套的折叠。
3 zc 关闭光标下的折叠。
4 zC 关闭光标下的折叠,以及嵌套的折叠。
5 za 当光标在关闭折叠上时,打开之。在打开折叠上时,关闭之。
6 zA 和za类似,不过对当前折叠和其嵌套折叠都有效。
7 zv 打开当前光标所在折叠,仅打开足够的折叠使光标所在的行不被折叠。
8 zr和zm 一层一层打开折叠和一层一层关闭折叠,这两个命令会递减和递增一个叫foldlevel的变量。如果你发现zm和zr不灵了,那有可能是你连续按的zr或zm次数多了,只要多按几次让foldlevel回到正常状态即可。执行以下zR和zM也可直接让foldlevel回到正常状态。
9 zR和zM 打开所有折叠,设置foldlevel为最高级别。关闭所有折叠,设置foldlevel为0。

在折叠间移动:

1 [z 到当前打开折叠的开始。如果已在开始处,移到包含这个折叠的折叠开始处。
2 ]z 到当前打开折叠的结束。如果已在结束处,移到包含这个折叠的折叠结束处。
3 zj 把光标移动到下一个折叠的开始处。
4 zk 把光标移动到前一个折叠的结束处。

参考:

在vim中运行 :h Folding 命令,查看折叠的帮助文档。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
各个插件配置设置单独配置: ls bundle/.configs/ : asyncrun.vim_conf.vim EasyMotion_conf.vim lookupfile_conf.vim supertab_conf.vim vim-markdown-toc_conf.vim bufexplorer_conf.vim eclim_conf.vim maximizer_conf.vim syntastic_conf.vim vim-powerline_conf.vim CCTree_conf.vim errormarker.vim_conf.vim neocomplcache_conf.vim tagbar_conf.vim vimshell.vim_conf.vim CompleteParameter.vim_conf.vim fuzzyfinder_conf.vim neocomplete.vim_conf.vim ultisnips_conf.vim vim-snippets_conf.vim deoplete-jedi_conf.vim grep.vim_conf.vim neosnippet_conf.vim unite.vim_conf.vim ydtrans_conf.vim deoplete.nvim_conf.vim init.vim nerdcommenter_conf.vim vcscommand_conf.vim YouCompleteMe_conf.vim DoxygenToolkit.vim_conf.vim jedi-vim_conf.vim nerdtree_conf.vim VimIM_conf.vim DrawIt_conf.vim jupyter-vim_conf.vim Nvim-R_conf.vim vim-instant-markdown_conf.vimvimrc文件进行基础配置: let mapleader="," let g:mapleader="," autocmd! :mapclear "==========很多插件,可能进行过修改, 若感觉不爽,可以在.vim搜索lidong, 进行还原=================== +-- 11 lines: 插件依赖设置 ---------------------------------------------------------------------------------- source ~/.vim/bundle/.configs/init.vim +--104 lines: F1~F12快捷键映射------------------------------------------------------------------------------- +-- 22 lines: 非F1~F12快捷键--------------------------------------------------------------------------------- +-- 5 lines: 自己定义的命令 -------------------------------------------------------------------------------- +-- 17 lines: 窗口配置--------------------------------------------------------------------------------------- +--229 lines: 简单配置--------------------------------------------------------------------------------------- +-- 55 lines: Gui选项 放到.gvimrc---------------------------------------------------------------------------- +-- 5 lines: 高亮 注释代码的颜色---------------------------------------------------------------------------- +-- 6 lines: 高亮 menu color ------------------------------------------------------------------------------- +-- 7 lines: 高亮 当前行(列)-------------------------------------------------------------------------------- +-- 3 lines: 高亮列----------------------------------------------------------------------------------------- +-- 13 lines: 高亮tab标签------------------------------------------------------------------------------------ +-- 8 lines: 高亮 其他-------------------------------------------------------------------------------------- +-- 10 lines: 字符编码(多字节)------------------------------------------------------------------------------- +-- 12 lines: 设置C/C++语言的具体缩进方式 eg. switch case 缩进----------------------------------------------- +-- 42 lines: vim折叠功能------------------------------------------------------------------------------------ +-- 19 lines: 文件比较--------------------------------------------------------------------------------------- +-- 26 lines: 单词列表匹配-----------------------------------------------------------------------------------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值