分享
 
 
 

谈Vim 6.0的Folding功能简介

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

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 上。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有