VIM常用快捷键

gD 跳转到局部变量的定义处
% 跳转到相配对的括号
'' 跳转到光标上次停靠的地方, 是两个', 而不是一个"
mx 设置书签,x只能是a-z的26个字母
`x 跳转到书签处("`"是1左边的键) 
> 增加缩进,"x>"表示增加以下x行的缩进
< 减少缩进,"x<"表示减少以下x行的缩进


{ 跳到上一段的开头
} 跳到下一段的的开头
( 移到这个句子的开头
) 移到下一个句子的开头
[[ 跳转至上一个函数(要求代码块中'{'必须单独占一行)
]] 跳转至下一个函数(要求代码块中'{'必须单独占一行)
C-] 跳转至函数或变量定义处
C-O 返回跳转前位置
C-T 同上
nC-T 返回跳转 n 次
0 数字0,跳转至行首
$ 跳转至行尾

^ 跳转至行第一个非空字符



在查看代码的时 候,如果代码十分冗长,尤其是 c/c++系列的时候,
代码结构比较让人难以理清,主要是各种注释、括号的匹配问题,
虽然可以用%来查看匹配的另外一半符号在哪里,但是 如果这一对符号之间的代码超过了一页,甚至好几页的话,那么也是比较难以理解的。
于是可以使用这个vim所提供的折叠功能来简化这些分析。
 使用的vimrh9自带的版本。
折叠的方式:

vim
 提供 6中折叠方式
manual
 手工定义折叠
indent
 更多的缩进表示更高级别的折叠
expr
 用表达式来定义折叠
syntax
 用语法高亮来定义折叠
diff
 对没有更改的文本进行折叠
marker
 对文中的标志折叠


可用选项 'foldmethod' 来设定折叠方式:set fdm=*****
注意,每一种折叠方式不兼容,即:你不能用expr又用marker方式。
目前我一般使用的都是indent 比较多。
使用时,用:set fdm=indent 命令来设置成marker折叠方式。
.vimrc文件中添加设置,可以使得每次打 vi 都启动折叠方式。如添加:set fdm=syntax

2.
 折叠打开与折合
选取了折叠方式后,我们就可以对某些代码 实施我们需要的折叠了。

如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。
indent
 对应的折叠代码有:
zc
 折叠
zC
 对所在范围内所有嵌套的折叠点进行折叠
zo
 展开折叠
zO
 对所在范围内所有嵌套的折叠点展开
[z
 到当前打开的折叠的开始处。
]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" 时有效。




主要命令:

zf-创建折叠

zf20G--创建折叠,从当前行折叠到第20行

zfgg--创建折叠,从当前位置折叠到文件头,非常适合编程的时候隐藏文件顶部的头文件包含,源文件注释

写程序时都是以函数为单位,可以很方便的折叠一个函数,而保留函数头部。如下函数,我们将光标停留在{处,输入zf%(%在vim中表示括号匹配,此处指匹配到另一个对应的大括号)
#include <stdio.h>
int main(int argc, char* argv[])
{
return 0;
}

效果就出来了:
#include <stdio.h>
int main(int argc, char* argv[])
+:-- 3行  {-------------------------------------------------}

  若要再阅读那些文本,则可以键入以下命令打开该折叠:
zo
 
你还可以用一下命令再关闭该折叠:
zc
 
所有的折叠命令都以'z' 开头。展开你的想像力,这个字母看起来就像一张折叠起来的
纸的侧面。而"z" 后面可用的字母,由于采用了帮助记忆方法选择,很容易记得住:
 
        zf      F-old creation (创建折叠)
        zo      O-pen a fold (打开折叠)
        zc      C-lose a fold (关闭折叠)
 
 
一次打开所有折叠:
zr  zR(用于有递归折叠的时候,功能与zr类似)
一次关闭所有折叠:
zm  zM(用于有递归折叠的时候,功能与zm类似)

 

更常用的命令:
zi (当我们创建了折叠以后,可以使用zi关闭所有折叠,将光标移到想浏览的文本处,再按zi,打开所有折叠)
 
 
折叠控制:
有时候,查看或记住一个折叠在哪儿,挺不容易的。更别说用|zo| 命令来打开了。要查
看那些已定义的折叠:
 
        :set foldcolumn=4
 
这个命令将在窗口左边显示一小栏来标识各个折叠。一个"+" 表示某个关闭的折叠。一
个"-" 表示每个打开的折叠的开头,而"|" 则表示该折叠内其余的行。
取消左边的小栏:
        :set foldcolumn&
 
你可以在折叠栏内用鼠标点击"+",以打开一个折叠。点击"-" ,或在它之下的某个
"|" ,将关闭一个打开的折叠。
 
存储和恢复一个折叠:
当你关闭一个文件,去做其他事情,或编辑其他文件,回来以后编辑同一个文件,如果折叠是手动方式创建的,则所有的折叠都消失了!为了保存折叠,可以使用:
:mkview
这将存储那些影响文件视图的设定及其他内容。
稍后回到同一个文件时,可以重新载入这个视图:
:loadview
 
你可以为一个文件储存多至十个视图。例如,把当前设置储存为第三个视图,并载入第
二个视图:
 
        :mkview 3
        :loadview 2
 
 
依赖缩进折叠:
如果希望依赖缩进折叠,则首先需要设置
:set foldmethod=indent
 
如果你写的代码比较规范,不规范也没事,先全部选中,然后按“=”,代码就规范一些了。完整的命令是ggvG=
然后试试zm,zr有什么效果,这个功能对于程序员还是挺有用的。当我们设置了foldmethod后就不能再手动创建折叠了,对于我这样喜欢不喜欢被约束的这个功能其实很不咋滴。
我们只需要重新设置foldmethod就可以了。
:set foldmethod& (后面加个&就是恢复默认设置,反正我是这么理解的)
 
其他折叠方式:
依赖标识折叠
依赖语法折叠
依赖表达式折叠


set foldmethod=indent "set default foldmethod
"zi 打开关闭折叠
"zv 查看此行
zm 关闭折叠
zM 关闭所有
zr 打开
zR 打开所有
zc 折叠当前行
zo 打开当前折叠
zd 删除折叠
zD 删除所有折叠


1. 折叠方式
可用选项 'foldmethod' 来设定折叠方式:set fdm=*****。
有 6 种方法来选定折叠:
manual           手工定义折叠
indent             更多的缩进表示更高级别的折叠
expr                用表达式来定义折叠
syntax             用语法高亮来定义折叠
diff                  对没有更改的文本进行折叠
marker            对文中的标志折叠
注意,每一种折叠方式不兼容,如不能即用expr又用marker方式,我主要轮流使用indent和marker方式进行折叠。

使用时,用:set fdm=marker 命令来设置成marker折叠方式(fdm是foldmethod的缩写)。
要使每次打开vim时折叠都生效,则在.vimrc文件中添加设置,如添加:set fdm=syntax,就像添加其它的初始化设置一样。

2. 折叠命令
选取了折叠方式后,我们就可以对某些代码实施我们需要的折叠了,由于我使用indent和marker稍微多一些,故以它们的使用为例:
如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。
在可折叠处(大括号中间):
zc      折叠
zC     对所在范围内所有嵌套的折叠点进行折叠
zo      展开折叠
zO     对所在范围内所有嵌套的折叠点展开
[z       到当前打开的折叠的开始处。
]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的代码折叠,小弟也是初学,仅做参考。




使用Vim的折叠功能书写程序代码

折行的用处:
2 创建折行进行大纲预览
2 移动到某处进行编辑
2 使用jzij打开文本进行编辑
2 编辑完毕后再用jzij打开折行进行移动

打开vim的折叠功能,请在~/.vimrc 中加入:set foldmethod=marker ,使用vim默认的折叠标签进行处理。使用方法如下:
1、加折叠标签
在normal模式下,从键盘输入zf并回车,您就会看到折叠在一起的两行标签如下:
/*{{{*/
.....这里输入您 的程序代码
/*}}}*/

2、输入程序代码后,将代码折叠起来使用如下命令(normal模式):
zc 回车

3、打开折叠的程序有以下几种方法
a、在折叠的行上移动光标
b、在normal模式下输入zo并回车

4、给一段文字加折行(normal 模式)
zfap

5、zr命令可以打开折叠几层的内容 zm使用内容折叠的更多一些(多层折叠操作时可反复使用)。

6、嵌套了多层的折行, 也可以用zR命令一次打开所有折行

7、关闭所有的嵌套折行使用zM

8、可以用jznj命令来禁用一个折行. 然后用jzNj还可以恢复它. jzij命令则可以在两者之间切换.

其它的,请参考vim的使用手册。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值