关于vim的折叠
参考: http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html 和 这篇文章: https://blog.csdn.net/bendanban/article/details/7743530
这篇文章的内容全是 上面 两篇文章中的内容!
发现可以使用命令模式:开始行号,结束行号folder命令就可以折叠了,
同样多行缩进可以使用:110,120>来将110行到120行缩进
VIM设置代码折叠
今天看了一下别人写的程序的源代码,发现是用vim写的,代码中有趣是用vim来折叠代码,一开始我以为是用插件的,后来上网查了查,得出以下使用方面的技巧。
- 折叠方式
可用选项来设定折叠方式:
可在Vim 配置文件中设置 set fdm=XXX
可直接在文件中使用注释调用vim命令 /* vim: set fdm=XXX: */
有6种方法来选定折叠:
manual 手工定义折叠
expr 用表达式来定义折叠
syntax 用语法高亮来定义折叠
diff 对没有更改的文本进行折叠
indent 更多的缩进表示更高级别的折叠
marker 对文中的标志折叠
注意,每一种折叠方式不兼容,如不能既用expr又用marker方式,我主要轮流使用indent和marker方式进行折叠。
使用时,用 set fdm=marker 命令来设置成marker折叠方式(fdm是foldmethod的缩写)。
要使每次打开vim时折叠都生效,则在.vimrc文件中添加设置,如添加:set fdm=syntax,就像添加其它的初始化设置一样。
- 折叠命令
选取了折叠方式后,我们就可以对某些代码实施我们需要的折叠了,由于我使用indent和marker稍微多一些,故以它们的使用为例:如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。
**要注意, indent和 marker创建 折叠的方式和方法 命令 是不同的! 并不都是 zc zC zo zO , 对于 marker方式的折叠, 创建方法的关键字是 zf, 这里的zf相当于 一个 命令关键字, 类似 于 dd, yy等的, 所以 必须 要结合 行数 的 范围 来 使用, 单单的使用 zf 其实 只会 折叠 紧挨着 的 两行! **
要理解 折叠范围 的 概念: 对于 indent来说, 最高一级的内容不会被折叠! 最高一级的内容, 相当于 折叠包裹上的标识文字, 相当于 折叠 文章 的 文章标题一样, 不然 最高一级的内容都折叠了, 那 当前折叠里面究竟是什么 也就不会知道了, 所以 : 折叠范围总是 从 第二层 开始的! 那么相应的命令 zc, zo, 跳转命令 [z, ]z等都是 针对 这个折叠范围 而言的, 不是 针对 最高一级来说的.
**同样的, 对于 marker方式的 折叠, 最高一级的 内容 是指 括号 所在的 行 比如 {, (, [, < 等 和它们相对应的 结尾行 , 折叠范围 就是 这些 括号 中 包含的内容, 但是, 不包括 括号 所在的 行!! **
在可折叠处(大括号中间): 就是说,fdm=indent的时候,不需要显示的 去创建折叠, 直接就可以使用折叠
zc 折叠
zC 对所在范围内()所有嵌套的折叠点进行折叠
zo 展开折叠
zO 对所在范围内所有嵌套的折叠点展开
[z 到当前打开的折叠的开始处。 在vim等其他编辑器中,左右 中括号, 就相当于一个跳转动作,jump beginning, jump ending 跳转的起始 和结束 动作
]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。
### 当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动
我们可以使用下面的命令来创建和删除折叠:
zf 创建折叠,比如在marker方式下: /// 必须跟 范围 !!!
zf56G,创建从当前行起到56行的代码折叠;
10zf或10zf+或zf10↓,创建从当前行起到后10行的代码折叠。
10zf-或zf10↑,创建从当前行起到之前10行的代码折叠。
在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。
zd 删除 (delete) 在光标下的折叠。
仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zD 循环删除 (Delete) 光标下的折叠,即嵌套删除折叠。
仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zE 除去 (Eliminate) 窗口里“所有”的折叠。
仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
====================================
要查看vim的变量,使用的命令是set, 而要查看vim的当前配置,支持哪些特性, 使用的命令是 version。要让vim更好的支持中文,需要的两个特性是: +multi_byte, +iconv(如果没有+iconv 则会提示 “不能转换编码”)需要重新将+iconv编译进去
vim的几个编码含义是:
encoding: enc, 是指的vim这个软件本身 在其内部的编码,比如buffer,比如信息提示等;
fileencoding : fenc, 是指vim新建一个文件时进行保存时的默认编码, 如果是打开一个已有的文件, 则不会受这个控制和影响,还是会保存为该文件原来的编码,除非你显式地使用这个命令。
fileencodings: fencs, 多了一个s, 表示vim在打开一个文件时, 会顺序地按这个设置fencs中的编码依次尝试去打开,如果这个序列中的编码都不能打开,则会显示为乱码。
termencoding:tenc, 是指如果采用终端工具,比如secureCRT来登录linux的vim时,在这个虚拟终端上应该用何种字体编码。
关于vim的折叠的更多相关文章
- VIM 代码折叠
VIM 代码折叠 VIM代码折叠方式可以用"foldmethod"选项来设置,如: set foldmethod=indent 有6种方式来折叠代码 1. manual //手工定 ...
- vim技巧:折叠快捷键
vim技巧:折叠快捷键 以前用的挺熟的,一段时间不用了,快捷键又忘了,不得不重新再看手册,今天专门整理一下,以后查找起来也比较方便. zc 折叠,只折叠最外层的折叠zC 对所在范围内所有嵌套的折叠点进 ...
- vim的个性化配置- 再谈vim的折叠和展开 -- 彻底掌握vim 的展开和折叠!
http://www.wklken.me/posts/2016/02/03/some-vim-configs.html 一般把 设置成 逗号, 是比较好的, 因为逗号比默认的leader 要方便键入 ...
- vim代码折叠命令
1. 折叠方式 可用选项 'foldmethod' 来设定折叠方式:set fdm=*****. 有 6 种方法来选定折叠: manual 手工定义折叠 ind ...
- vim代码折叠功能
问题:怎样在vim中实现代码折叠功能? 解决方法:直接使用vim自带的快捷键和命令,便可以实现功能强大的折叠 小试折叠: 1 :set fdm=marker 在vim中执行该命令 2 5G 将 ...
- vim代码折叠命令简短
作者:zhanhailiang 日期:2014-10-18 1. 通过fdm实现代码折叠:set fdm=xxx 有下面6种方式实现折叠: |fold-manual| manual Folds are ...
- vim:折叠操作
zo 打开当前折叠 zc 关闭当前折叠 zr 打开所有折叠 zm 关闭所有折叠
- Vim折叠模式设置
参考文章:http://www.cnblogs.com/welkinwalker/archive/2011/05/30/2063587.html set foldmethod=indent " ...
- Linux下面对于VIM编辑器的代码折叠使用与screen
VIM设置代码折叠 1. 折叠方式 可用选项 'foldmethod' 来设定折叠方式:set fdm=*****.有 6 种方法来选定折叠: manual 手工 ...
随机推荐
- Linux 的基本操作(系统用户及用户组的管理)
[认识/etc/passwd和/etc/shadow] 这两个文件可以说是linux系统中最重要的文件之一.如果没有这两个文件或者这两个文件出问题,则你是无法正常登录linux系统的. /etc/pa ...
- 防止vue文件中的样式出现‘污染’情况(html5 scoped特性)
近期在项目中出现了vue样式污染的情况: 一个页面刚进去时样式不正常,刷新之后,样式才才达到预期那样 在vue中,如果把样式写在vue文件的 style中,可能会出现样式污染的情况,这是要把写样式的标 ...
- 七牛 OCR 接口调试 & 七牛鉴权 Token 应用
接口规约 PHP 实现 核心代码 执行结果 源代码 Java 实现 核心代码 执行结果 源代码 [现学现卖]图片内容审核接口 Python 实现 核心代码 执行结果 源代码 Go 实现 核心代码 执行 ...
- java学习之路--继承(子类构造器)
子类的构造器不能访问父类的私有域,所以必须用的父类的构造器来对这部分的私有域进行初始化,我们可以通过super实现对父类的构造器的调用,使用super调用父类构造器的语句,必须放在子类构造器的第一句. ...
- 常用基础Linux操作命令总结与hadoop基础操作命令
cd命令:切换目录 (1)切换到目录 /usr/local cd /usr/local (2)去到目前的上层目录 cd .. (3)回到自己的主文件夹 cd ~ ls命令:查看文件与目录 (4)查看目 ...
- shop_z 一套非常适合二次开发的php后台管理系统
QQ群:247823727 如果你需要定制某些功能开联系群主,价格实惠,后期交接完善,有上手培训 shop_z基础thinkphp5 php7上开发运行,速度杠杠的 地址:https://gitee ...
- 程序中打印当前进程的调用堆栈(backtrace)
为了方便调式程序,产品中需要在程序崩溃或遇到问题时打印出当前的调用堆栈.由于是基于Linux的ARM嵌入式系统,没有足够的空间来存放coredump文件. 实现方法,首先用__builtin_fram ...
- css3之动画属性transform、transition、animation
工作当中,会遇到很多有趣的小动画,使用css3代替js会节省工作量,css3一些属性浏览器会出现不兼容,加浏览器的内核前缀 -moz-. -webkit-. -o- 1.transform rotat ...
- vue.js 之 watch 详解
接我上篇博客的例子: 在上面代码中,当我们修改 firstName 或 lastName 后,watch 监听每次修改变化的新值,然后计算输出 fullName:此时 watch 的一个缺点是,最初绑 ...
- MySQL5.7 虚拟列实现表达式或函数索引
MySQL5.7 虚拟列实现表达式或函数索引 http://www.linuxidc.com/Linux/2015-11/125162.htm https://dev.mysql.com/doc/re ...