一、VIM设置代码折叠
×××××××××××××××××
今天看了一下别人写的程序的源代码,发现是用vim写的,代码中有趣是用vim来折叠代码,一开始我以为是用插件的,后来
上网查了查,得出以下使用方面的技巧。
1. 折叠方式
可用选项来设定折叠方式:
可在Vim 配置文件中设置 set fdm=XXX
可直接在文件中使用注释调用vim命令 /* vim: set fdm=XXX: */
有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方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动
3.创建和删除折叠
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调整分割窗口的高度和宽度
×××××××××××××××××
1.调整宽度
vim多窗口有时候需要调整默认的窗口宽度和高度,可以用如下命令配合使用
CTRL-W = 使得所有窗口 (几乎) 等宽、等高,但当前窗口使用 'winheight' 和 'winwidth'。
:res[ize] -N
CTRL-W - 使得当前窗口高度减 N (默认值是 1)。如果在 'vertical' 之后使用,则使得宽度减 N。
:res[ize] +N
CTRL-W + 使得当前窗口高度加 N (默认值是 1)。如果在 'vertical' 之后使用,则使得宽度加 N。
:res[ize] [N]
CTRL-W CTRL-_
CTRL-W _ 设置当前窗口的高度为 N (默认值为最大可能高度)。
:vertical res[ize] [N]
CTRL-W | 设置当前窗口的宽度为 N (默认值为最大可能宽度)。
z{nr} 设置当前窗口的高度为 {nr}。
CTRL-W
CTRL-W > 使得当前窗口宽度加 N (默认值是 1)。
2.整个窗口的移动
CTRL-W-H 将窗口移到最左边
CTRL-W-L 将窗口移到最右边
CTRL-W-J 将窗口移到底端
CTRL-W-K 将窗口移到顶端
三、VIM窗口跳转
vim中在分割的多个窗口间跳转的最简单方法,就是借助CTRL+w组合命令和vim中的上下左右快捷建(h,j,k,l)
CTRL+w+h :转到当前窗口的左侧窗口
CTRL+w+j :转到当前窗口的下侧窗口
CTRL+w+k :转到当前窗口的上侧窗口
CTRL+w+l :转到当前窗口的右侧窗口
CTRL+w+w :多个窗口间快捷跳转
四、VIM居中编辑行
×××××××××××××××××
我们编辑文件时,文件长了之后可编辑行一直是在窗口最下面, 要移动到窗口中间可以同过
'zz'快捷键。
另外可以设置vim 的下面选项
'scrolloff'/ 'so'
#总在中间
:se so=999
#下面总有3行
:se so=3
五、VIM中浏览目录
1.浏览目录
浏览目录的命令很简单:(你也可以直接vim一个目录)
:Ex 浏览目录,会在当前窗口打开并显示目录
这个界面中,你可以用 j, k 键上下移动,然后回车,进入一个目录,或是找开一个文件。你可以看到上面有一堆命令:这个界面中,你可以用 j, k 键上下移动,然后回车,进入一个目录,或是找开一个文件。你可以看到上面有一堆命令:
【-】 到上级目录
【D】删除文件(大写)
【R】改文件名(大写)
【s】对文件排序(小写)
【x】执行文件(小写)
当然,打开的文件会把现有已打开的文件给冲掉——也就是说你只看到了一个文件。
如果你要改变当前浏览的目录,或是查看当前浏览的目录,你可以使用和shell一样的命令:
:cd
:pwd - 查看当前目录
2.窗口分屏浏览
相信你在《Vim的窗口分屏》一文中,你已经知道了怎么拆分窗口了。其实,我更多的不是用拆分窗口的命令,而是用浏览文件的命令来分隔窗口。如:
:Hex 全称为 :Hexplore
把当前窗口上下分屏,并在下面进行目录浏览;
:He!
如果你要在上面,你就在 :He后面加个 !;
:Ve 全称为 :Vexplore 。
如果你要左右分屏的话,你可以这样;
3.分屏同步移动
要让两个分屏中的文件同步移动,很简单,你需要到需要同步移动的两个屏中都输入如下命令(相当于使用“铁锁连环”):
:set scb
如果你需要解开,那么就输入下面的命令:
:set scb!
注:set scb 是 set scrollbind 的简写。