手把手教你把Vim改装成一个IDE编程环境(图文)
By: | 吴垠 |
Date: | 2007-12-27 |
Email: | lazy.fox.wu#gmail.com |
Homepage: | http://blog.csdn.net/wooin |
Copyright: | 该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需经作者同意。 联系方式:lazy.fox.wu#gmail.com |
16 | 代码折叠 (fold) |
| 代码折叠功能是现在流行的IDE中都具备具备的最基础的一项功能, 甚至一些编辑器也有代码折叠的功能了, 比如UltraEdit, Kate....等等, vim当然在这方面也不会落后与人, 关于代码折叠的介绍大家可以看看帮助手册中的这些章节, 反正都是中文, 不会让我再翻译成汉语拼音给你看吧^_^
:help usr_28.txt :help fold.txt | 我简单摘抄一点, 省得我自己还要打字.... *28.1* 什么是折叠? 折叠用于把缓冲区内某一范围内的文本行显示为屏幕上的一行。就像一张纸,要它缩短 些,可以把它折叠起来: +------------------------------------+ | 行 1 | | 行 2 | | 行 3 | |________________________| / / /________________________/ / 被折叠的行 / /________________________/ | 行 12 | | 行 13 | | 行 14 | +-----------------------------------+ 那些文本仍然在缓冲区内而没有改变。受到折叠影响的只是文本行显示的方式。 折叠的好处是,通过把多行的一节折叠成带有折叠提示的一行,会使你更好地了解对文本 的宏观结构。 真实的情景见下图(图19): (--- 图19 ---) vim提供以下6种方法来选定折叠方式:
manual | 手工定义折叠 | indent | 更多的缩进表示更高级别的折叠 | expr | 用表达式来定义折叠 | syntax | 用语法高亮来定义折叠 | diff | 对没有更改的文本进行折叠 | marker | 对文中的标志折叠 | 可用选项 'foldmethod' 来设定折叠方法。比如, 如果想按照语法高亮来定义折叠, 则在 ~/.vimrc中增加下面这行:
set foldmethod=syntax set foldlevel=100 " 启动vim时不要自动折叠代码 | 这里主要是讲编程的, 所以我就只介绍按照语法高亮来折叠代码, 其他的折叠方法如果大家想用的话可以自己看看帮助手册, 大同小异的. 按照语法高亮来折叠代码, 其实就是按照代码中的一些括号来定义折叠位置, 比如: "{ }", "/* */". 现在练习一下, 就在nomal模式下输入命令"za", 你会发现当前光标所在的最近的一层括号被折叠起来了, 再输入一遍"za"命令, 这个折叠又打开了, "za"命令就是打开/关闭当前折叠用的, 下面是常用的一些命令:
za | 打开/关闭当前折叠 | zA | 循环地打开/关闭当前折叠 | zo | 打开当前折叠 | zc | 关闭当前折叠 | zM | 关闭所有折叠 | zR | 打开所有折叠 | 其他还有一些我不常用的设置和命令大家可以自己看看帮助手册吧, 我就不罗嗦了. |
17 | 提示函数原形-- 插件: echofunc |
|
下载地址 | http://www.vim.org/scripts/script.php?script_id=1735 | 版本 | 1.18 | 安装 | 把echofunc.vim 文件丢到 ~/.vim/plugin 文件夹就好了 | 手册 | 无 | 当编程调用一个函数时, 最可恶的是忘了这个函数参数列表的详细定义了, 然后要跳转到定义处看看, 再跳转回来继续写, 如果参数列表太长了, 还要来回跳转多次, 对我等记性不好的人来说简直是折磨, 还好有贴心的人写了这个插件, 让我可以把精力放在Coding上, 真是伟大呀, 作者的名字叫: Ming Bai <mbbill AT gmail DOT com> Wu Yongwei <wuyongwei AT gmail DOT com> 看样子是汉人, 而且还有一个是我本家, 这个猜测令我兴奋不已呀... 言归正传, 该插件的作用是当你在vim插入(insert)模式下紧接着函数名后输入一个"("的时候, 这个函数的声明就会自动显示在命令行中. 如果这个函数有多个声明, 则可以通过按键"Alt+-"和"Alt+="向前和向后翻页, 这个两个键可以通过设置EchoFuncKeyPrev和EchoFuncKeyNext参数来修改. 见下图(图20)就是这种应用, 你先不要急着试, 先看完我下面的介绍 (--- 图20 ---) 如果想看到上图的效果, 还有一个要注意的地方, 这个插件的功能需要tags文件的支持, 并且在创建tags文件的时候要加选项"--fields=+lS", 整个创建tags文件的命令如下:
如果你还不会用tags文件, 先看看前面的章节<在程序中跳来跳去: Ctags 的使用>吧. 当tags文件都弄好了后, 就可以试试效果了, 是不是跟我上图一样呀^_^ 还有一个小技巧告诉你, 当你把鼠标放在函数名上的时候会有一个tip窗口弹出, 该窗口中也会有函数的声明, 这个功能需要你在编译vim时编译"+balloon_eval"特性了. |