1. 问题:怎样在vim中实现代码折叠功能?
  2. 解决方法:直接使用vim自带的快捷键和命令,便可以实现功能强大的折叠
  3. 小试折叠:
  4. 1  :set fdm=marker  在vim中执行该命令
  5. 2  5G  将光标跳转到第5行
  6. 3  zf10G  折叠第5行到第10行的代码,vim会在折叠的开始和结束自动添加三个连续的花括号作为标记
  7. 4  zR  打开所有折叠
  8. 5  zM  关闭所有折叠
  9. 6  zE  删除所有的折叠标签
  10. 7  退出vim窗口再次打开,执行2-6步。依然可以折叠,但是没有标记了。重新打开后折叠信息会丢失。
  11. 折叠方法:
  12. 1  manual  (不常用)默认折叠方法,如上面第7步即为该方法,关闭vim折叠会丢失。如果想保持折叠信息,可运行 :mkview 命令,重启后用 :loadview 命令回复。该命令生成的缓存文件位于 ~/.vim/view 文件夹中。移动或重命名文件,折叠信息依然会丢失。
  13. 2  indent  (常用)缩进折叠方法,相同的缩进中代码会被折叠。
  14. 3  syntax  (不常用)语法高亮折叠,在c/c++中会折叠花括号部分,其它格式代码中有的不能自动折叠。
  15. 4  marker  (常用)标记折叠方法,如上面1-6所使用的方法。关闭vim折叠信息不会丢失,而且易用控制和标注。
  16. 5  还有两种 diff 和 expr,目前我还没有用过。
  17. 具体介绍:
  18. 1  以 marker 为例,可以在vim中运行 :set fdm=marker 来设置折叠方法设置。折叠方法的时候,= 两边不能有空格。也可以将该命令添加到~/.vimrc中,实现vim自动加载。
  19. 2  在使用小试折叠中 2 3 步折叠的时候,vim会自动添加三个连续的花括号作为标记,可在开始的花括号前添加介绍,花括号后添加级别号,级别号不能为0。如:/*折叠介绍{{{1*/
  20. /*}}}*/
  21. 3  级别的定义稍显复杂。在一般编码中,通常把不需要修改的代码添加标记折叠。没有必要在给折叠分等级。如果想快速折叠就切换为indent折叠方面,适用于任何有缩进的代码。
  22. 折叠命令:
  23. 1  zf  创建折叠,可以按照前面的方式进行折叠,也可以选中代码后进行折叠。
  24. 2  zF  在当前行创建折叠。当一开始就计划要折叠所写代码的时候,可以用该命令创建一对折叠符号,然后再往里面填写内容。
  25. 3  :5,10fo  在vim中运行该命令会在折叠 5-10 行中的代码,可以用其它数字代替之。
  26. 4  zd  删除光标下的折叠。
  27. 5  zD  删除光标下的折叠,以及嵌套的折叠。
  28. 6  zE  删除窗口内的所有折叠。仅当 manual 和 marker 折叠方法下有效。
  29. 打开和关闭折叠:
  30. 1  zo  打开光标下的折叠。
  31. 2  zO  打开光标下的折叠,以及嵌套的折叠。
  32. 3  zc  关闭光标下的折叠。
  33. 4  zC  关闭光标下的折叠,以及嵌套的折叠。
  34. 5  za  当光标在关闭折叠上时,打开之。在打开折叠上时,关闭之。
  35. 6  zA  和za类似,不过对当前折叠和其嵌套折叠都有效。
  36. 7  zv  打开当前光标所在折叠,仅打开足够的折叠使光标所在的行不被折叠。
  37. 8  zr和zm  一层一层打开折叠和一层一层关闭折叠,这两个命令会递减和递增一个叫foldlevel的变量。如果你发现zm和zr不灵了,那有可能是你连续按的zr或zm次数多了,只要多按几次让foldlevel回到正常状态即可。执行以下zR和zM也可直接让foldlevel回到正常状态。
  38. 9  zR和zM  打开所有折叠,设置foldlevel为最高级别。关闭所有折叠,设置foldlevel为0。
  39. 在折叠间移动:
  40. 1  [z  到当前打开折叠的开始。如果已在开始处,移到包含这个折叠的折叠开始处。
  41. 2  ]z  到当前打开折叠的结束。如果已在结束处,移到包含这个折叠的折叠结束处。
  42. 3  zj  把光标移动到下一个折叠的开始处。
  43. 4  zk  把光标移动到前一个折叠的结束处。
  44. 参考:
  45. 在vim中运行 :h Folding 命令,查看折叠的帮助文档。

vim代码折叠功能的更多相关文章

  1. VIM 代码折叠

    VIM 代码折叠 VIM代码折叠方式可以用"foldmethod"选项来设置,如: set foldmethod=indent 有6种方式来折叠代码 1. manual //手工定 ...

  2. 找回Xcode7的代码折叠功能

    升级到Xcode7后,会发现代码折叠功能不见了,这是怎么回事? 其实这个功能还在的,用以下的快捷键仍然可以折叠代码.只是不能用鼠标实现折叠了:在Xcode菜单里选择Preference——Text E ...

  3. vim代码折叠命令

    1. 折叠方式 可用选项 'foldmethod' 来设定折叠方式:set fdm=*****. 有 6 种方法来选定折叠:           manual           手工定义折叠 ind ...

  4. Keil 代码折叠功能的使用

    使用keil时将某段{......}内的代码折叠起来的方法:

  5. vim代码折叠命令简短

    作者:zhanhailiang 日期:2014-10-18 1. 通过fdm实现代码折叠:set fdm=xxx 有下面6种方式实现折叠: |fold-manual| manual Folds are ...

  6. vim添加代码折叠功能

    用空格或者za命名改变,添加如下到vimrc文件 " Enable folding set foldmethod=indent set foldlevel=99 " Enable ...

  7. android studio 中类似VS的代码折叠功能Region

    1. 打开android studio 2. 选择要折叠的代码 3. 按Ctrl + Alt + T 选择 “region .. end region comments” Group selectio ...

  8. 测试md代码折叠功能

    展开查看 System.out.println("Hello to see U!");

  9. 【转】vim折叠功能

    原文:https://www.yupengsir.com/topic/content?i=140 这个作者的vim系列是高级的用法, 要学习一下. https://blog.easwy.com/arc ...

随机推荐

  1. Java 8:不要再用循环了

    本文由 ImportNew - 进林 翻译自 deadcoderising.欢迎加入翻译小组.转载请见文末要求. 正如我之前所写的,Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一 ...

  2. hdu5127 Dogs' Candies CDQ分治 动态凸包

    传送门 题意 有三种操作 加入一个二元组\((x,y)\) 删除一个二元组\((x,y)\) 给出一个二元组\((a,b)\),问\(ax+by\)的最大值 题解 \(z=ax+by \Rightar ...

  3. C#截取指定字符串函数

    本文转载:http://www.cnblogs.com/liufei88866/archive/2012/05/12/2497395.html 一.通过函数方式进行获取. public string ...

  4. 基于Android 4.4 开发的多窗体系统 开放源代码

    Hi, 这是我基于Android 4.4开发的多窗体系统,还有非常多不足,还请多多不吝赐教啊,代码已经所有开源. 视频地址 源代码地址 Done: 1. APP以窗体化显示 在 PhoneWindow ...

  5. Linux下配置SSL (转)

    没有安装apache的情况: 首先安装SSL,再编译安装Apache,再配置证书即可 1.下载apache和openssl 网址:http://www.apache.org http://www.op ...

  6. iozone文件系统测试 与EXCEL 制图

    http://www.iozone.org/[root@monitor bin]# ./iozone -a -s 512m -f /usr/test -y -q -Rb /root. -i -i Io ...

  7. LINUX内核调度器+linux 内存

    http://www.cnblogs.com/tolimit/p/4303052.html

  8. web.xml常用标签整理(不定期更新)

    <?xml version="1.0" encoding="UTF-8"?><!-- 标明使用的XML版本和文档编码,此项必须位于第一行,之前 ...

  9. ASP.NET Core和ASP.NET Framework共享Identity身份验证

    .NET Core 已经热了好一阵子,1.1版本发布后其可用性也越来越高,开源.组件化.跨平台.性能优秀.社区活跃等等标签再加上"微软爸爸"主推和大力支持,尽管现阶段对比.net ...

  10. mvc form

    当点击提交按钮后,想在Controll里取到Form里的数据. 必须在控件上设置name属性 例如<input type='text',name='userId'/>, 在controll ...