文档章节

vim 技巧

C
 C_Geek
发布于 2015/09/14 15:54
字数 1722
阅读 119
收藏 3
一、VIM设置代码折叠 

×××××××××××××××××

转自http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html

今天看了一下别人写的程序的源代码,发现是用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调整分割窗口的高度和宽度

×××××××××××××××××

转自http://www.cnblogs.com/xuechao/archive/2011/03/29/1999292.html


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}<CR>       设置当前窗口的高度为 {nr}。
                                           
CTRL-W <        使得当前窗口宽度减 N (默认值是 1)。                                              
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中浏览目录

修改转自http://my.oschina.net/hoolev/blog/415348

1.浏览目录

浏览目录的命令很简单:(你也可以直接vim一个目录)

:Ex 浏览目录,会在当前窗口打开并显示目录

这个界面中,你可以用 j, k 键上下移动,然后回车,进入一个目录,或是找开一个文件。你可以看到上面有一堆命令:这个界面中,你可以用 j, k 键上下移动,然后回车,进入一个目录,或是找开一个文件。你可以看到上面有一堆命令:

【-】 到上级目录
【D】删除文件(大写)
【R】改文件名(大写)
【s】对文件排序(小写)
【x】执行文件(小写)

当然,打开的文件会把现有已打开的文件给冲掉——也就是说你只看到了一个文件。

如果你要改变当前浏览的目录,或是查看当前浏览的目录,你可以使用和shell一样的命令:

:cd <dir> – 改变当前目录
:pwd - 查看当前目录
2.窗口分屏浏览

相信你在《Vim的窗口分屏》一文中,你已经知道了怎么拆分窗口了。其实,我更多的不是用拆分窗口的命令,而是用浏览文件的命令来分隔窗口。如:

:Hex   全称为 :Hexplore  
把当前窗口上下分屏,并在下面进行目录浏览;
:He!   
如果你要在上面,你就在 :He后面加个 !;
:Ve 全称为 :Vexplore 。
如果你要左右分屏的话,你可以这样;

3.分屏同步移动

要让两个分屏中的文件同步移动,很简单,你需要到需要同步移动的两个屏中都输入如下命令(相当于使用“铁锁连环”):

:set scb

如果你需要解开,那么就输入下面的命令:

:set scb!

注:set scb 是 set scrollbind 的简写。

© 著作权归作者所有

C
粉丝 1
博文 43
码字总数 11167
作品 0
浦东
程序员
私信 提问
荒诞说vim使用技巧

前言: 有了会vim的基本操作我们还需要什么呢?答案是钱!其实是操作的技巧。熟练技巧性的vim,能够快速提高编辑文本的效率。 当你习惯使用vim时,不由的会感叹到:我仿佛进入了人间仙境,比...

hillsowl
2016/03/13
62
0
最全LinuxC语言系统开发资源视频资源

1小时快速攻破链表数据结构----(视频可下载)http://www.wyzc.com/forum/56796.html 深入理解auto register static关键字 http://www.wyzc.com/forum/56132.html 如何使用日期时间函数 http...

马洪伟
2014/12/26
195
0
vim的一些设置

一、vim的一些小设置 vim在Linux系统下是非常好用的一个文本编辑器,但是默认是没有任何设置的,我们可以在~/.vimrc 文件里面添加进自己想要的内容。设置如下: 1 set nu //给vim里的内容设...

柳白子
2016/11/15
19
0
更好的使用 Vim

改键 我之前一直以为改键的操作做没有必要,但是在尝试了一个月以后我已经没办法重新使用别人的键盘了 ———— 太慢了。 改建的意义在于将 Ctrl 映射到 Caps Lock 上。原因在于小拇指很容易...

局长
2016/09/05
5.2K
10
Python: vi 简单配置

.vimrc 文件: "语法高亮syntax on"自动检测文件类型并加载相应设置filetype plugin indent on 或者 filetype on filetype plugin on filetype indent on autocmd FileType python setlocal......

Honghe
2012/12/26
602
0

没有更多内容

加载失败,请刷新页面

加载更多

规则引擎

解决问题 版本迭代速度更不上业务变化,但是若多个业务同时变化,除了为每个业务设计专属配置项也不利于操作。就想服务接口单纯化,将复杂多变的业务逻辑交给规则引擎,让用户在web端或cs端自...

无极之岚
42分钟前
7
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
今天
422
10
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
10
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部