手把手教你把Vim改装成一个IDE编程环境--2

来源:互联网 发布:方舟子 中医 知乎 编辑:程序博客网 时间:2024/04/28 04:49

手把手教你把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文件的命令如下:

$ ctags -R --fields=+lS

如果你还不会用tags文件, 先看看前面的章节<在程序中跳来跳去: Ctags 的使用>吧. 当tags文件都弄好了后,就可以试试效果了, 是不是跟我上图一样呀^_^

还有一个小技巧告诉你, 当你把鼠标放在函数名上的时候会有一个tip窗口弹出, 该窗口中也会有函数的声明,这个功能需要你在编译vim时编译"+balloon_eval"特性了.