庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>操作系统>Linux>编程开发>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

谈Vim 6.0的Folding功能简介

 作者:本站收集   日期:2005-4-13
字号选择〖 〗/ 双击滚屏 单击停止   
Vim 6.0 多了超级好用的 Folding 功 能,这篇文章是为了让大家能快速了解使用方法而写的。在开始前,先准备好你的 Vim 6.0 吧( version >= aq BETA ),如果不知道到哪里可以取得,可以至 http://www.vim.org


简介


Vim 是什麽就不介绍了,此篇文章当作你已经有了基本 Vi 或 Vim 使用的基础。但 Folding 当然要介绍一下, Folding 的中文叫做「折」。而在 Vim 中呢,就是可以把文章或程序码给「折」起来。这样说可能很模糊,不如看个例子吧。

假设现在我有一个蛮长的程序,大概有一两千行。那麽当我们想浏览这份 Code 时,必然很难了解整体的结构,这时如果我们可以把函式的内容都「折」起来,不就能很轻易的看出这个程序有哪些主要的组成部份了吗?甚至,当我们在写这个程序时,如果有一些函式是不太需要再 review 过的,那为什麽不让它暂时不见,等到我们需要看这函式内容时,再把它打开来呢?

嗯,这时就需要 Folding 了,把暂时不要的部份给折起来,这样就可以让我们更专心处理其馀的部份了。


开始吧


嗯,做完简单介绍就不多说废话了,直接开始教大家这有趣的功 能。首先,先打开 Vim ,输入这段程序。


void fold()
{
int i;
if(1==1){
printf("hihi..");
printf("hihi..");
printf("hihi..");
printf("hihi..");
printf("hihi..");
}
for(i=0;i<10;i++){
printf("do nothing\n");
}
}
int main()
{
int a,b;
int c,d;

printf("hello folding");
printf("hello folding");
printf("hello folding");
fold();
}



这程序没什麽用,只是为了示范而已 :p

假设现在我们正在编辑 main 部份,然後 fold 这函式已经写好了,所以我们想暂时把 fold 函式给折起来,只留下 main 来让我们专心编辑。folding 的方法有好几种,默认则是 manual 模式,其馀还有 indent 、 expr 、marker 、 syntax 。这里先从 manual 模式开始。

manual 意味著你要手动决定你要折哪一个段落,你可以自己选要哪几行至哪几行,或者是哪一个 visual block 。现在我们想把整个 fold() 折起来,那麽只要在 void fold() 下面的那一个大括号 { 上面按 zf% ,就可以把整个 fold() 给暂时折起来了。( % 的功 用就自动比对括号。例如 d% 就可以删掉整组括号内的东西)

嘿,看到了神奇的效果了吧。这样相信大家(如果熟悉 Vi 的话)就可以马上举一反三,用 zf 来折 visual block ,或 paragraph 等等 ..

接下来,把它折起来後当然也要能打开,不然不就没有什麽用了吗 :P

打开的方法很简单,只要在那个被折起来的那一行上面按 zo ,就可以打开 folding 了。值得一提的是,如果你的 folding 中还有 folding ,例如你先把fold() 中的 if(){} 给折起来了,再把 fold() 整个折起来。这样用 zo 的话,就只能打开第一层的 folding 。所以呢,如果我们想打开底下全部摺叠起来的 code ,只要用 zO 就可以了。


进阶的 Folding 用法



indent mode
虽然说进阶,可是事实上也只是讲讲不同的 folding method 的用法而已。前面讲的是 manual 模式中,如何折叠与打开一段文章。接下来,我们来研究一下特别的情况。

首先,先把 folding method 设为 indent ,输入 :set foldmethod=indent这样可以让 Vim 自动依照缩排来折文章。
回到前面那个程序码,现在假如我们想把 fold() 中的 if 折起来,在 indent模式下,只要在 if 那个 block 里面随意一点按 zc ,这样就可以把那同一排的程序码折起来了。(这就是所谓的 indent mode )这样子的好处是,我们不必手动决定要折哪里,只要让 Vim 依照特定的规则(此处即是用 indent 的层数)自动来决定要折的部份就可以了。另外要注意的是, zf 只适用於 manual mode 或 marker mode 中,其馀的都要用 zc 让 Vim 自动作 folding 。

嗯,折起来有一点不同。可是打开就一样了, zo 或 zO 都可以打开 folding 。


marker mode
marker mode 有点类似 manual mode ,主要是利用一些标记来让 Vim 知道该把何处折起来。例如像以下这篇文章∶
1. 简介 {{{1
这里是 vim 6.0 的简介喔!
vim 6.0 多了很多好用的功 能!
}}}

2. 开始吧 {{{1

2.1 folding {{{2
folding 就是这篇文章在写的东西 :P
}}}

2.2 diff mode {{{2
diff mode 是 vim 6 另一个有趣的功 能之一喔!
}}}

}}}



用 {{{n }}} 包围起来的部份,就是一个可以被折起来的区块,至於那个数字 n 就是指第几层的 folding 。当我们用这种方式手动指定了需作 folding 的区块,只要在 {{{ 和 }}} 之间按 zc ,就可以把这个 fold给折起来了。

另外,还是提醒一下,用这 mode 前要先 :set foldmethod=marker


就这样而已
嘿! folding 其实大致上也就这样而已,剩下的其实只是一些杂项功 能。可以自己在 vim 中打 :help folding ,这样就能看到非常详细的介绍了。

底下条列出一部份 folding 相关指令。
zf 在 manual 和 marker 模式时,手动作个 fold 出来。

zF 前面加上 N ,可以把以下 N 行折起来。

:{range}fo[ld] 跟 zf 一样, Ex 命令而已。

zd 删除游标上的 fold 。

zo 打开游标上的 fold 。

zO 递回地打开游标上底下所有的 fold 。

zc 把游标上的 fold 折起来。

zC 递回地折起游标上底下所有的 fold 。

zM 把整个档案所有的 fold 都折起来。

zR 把整个档案所有的 fold 都打开。

:{range}foldo[pen][!] 同 zo , Ex 命令。

:{range}foldc[lose][!] 同 zc , Ez 命令。

zj 把游标移到下一个 fold 上。

zk 把游标移到上一个 fold 上。
上一篇:嵌入式操作系统调试    下一篇:Shell 编程(1)  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-4-13
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿