构建vim的可视化C++编辑平台

来源:互联网 发布:淘宝装米礼品盒 编辑:程序博客网 时间:2024/05/17 17:58

 

Vim是一个强大的文本编辑器。我们在win32平台下用VC写代码的时候,常常比较习惯VC给予的一些格式控制和代码补全功能,而这些功能都是可以在 vim中实现的,并且,已经有前人为我们写好了插件脚本,我们只需要非常简单的设置,就可以迅速的构建出类似VC的C++编译环境。

Vim的配置文件通常在~/.vimrc中。我们首先可以加入这样两句:

syntax on    //语法高亮打开,这样我们就可以看倒C/C++的关键字成为了彩色;
:set cin!    //C缩进打开,这样vim会自动判断缩进的设置;

完成这样的设置后,当我们创建或者打开vim所能识别的C/C++源文件的时候,我们就可以看到关键字的颜色以及自动的缩进了。

需要指出的一点是,按照Unix源程序的习惯,我们最好以ASCII编码来写程序,而Debian的内部编码默认是UTF-8。当然,如果我们vim创建的文件没有汉字等其他字符的时候,产生的文件自动是ASCII编码的,但是,某些插件,比如vim的c-support插件会自动添加文件的创建日期,这样,因为我们系统默认语言一般是zh_CN,所以就会产生中文的日期显示。所以,一个解决方法是在运行创建cpp文件的vim的时候,指定使用的语言,或者,干脆做一个alias来简单使用:

alias cvim='LC_ALL=C vim'

这样,就可以确保创建的cpp文件不带非ASCII字符。

接下来,我们简单了解一下ctags。简单说,ctags是为许多计算机语言的源代码文件做索引,以提供给编辑器(比如我们的vim)使用的。我们先看看ctags的帮助

ctags --help

以下信息是我们将用到的:

-R   Equivalent to --recurse.
--recurse=[yes|no]    Recurse into directories supplied on command line [no].
--languages=[+|-]list
       Restrict files scanned for tags to those mapped to langauges
       specified in the comma-separated 'list'. The list can contain any
       built-in or user-defined language [all].
--fields=[+|-]flags
      Include selected extension fields (flags: "afmikKlnsStz") [fks].
--extra=[+|-]flags
      Include extra tag entries for selected information (flags: "fq").

我们用这样的命令在源文件所在的目录运行:(用样,我们可以做一个alias,我们最后来讨论这个问题)

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q

其中参数的含义是:
--c++-kinds=+p  : 为C++文件增加函数原型的标签
--fields=+iaS   : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
--extra=+q      : 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全

好了,现在准备知识讲完了。我们先实现C++对象用.或者->调用方法的时候自动产生选择的下拉菜单。我们需要的插件是OmniCppComplete,在vim官方这里下载http://www.vim.org/scripts/script.php?script_id=1520

下载到的是一个压缩包,解压到~/.vim/下相应的目录就可以了。另外,我们需要在~/.vimrc中打开装载插件:

:filetype plugin on

(或许还需要打开vim对源代码的识别,不过我是没有用到,Debian 4.0,如果需要的话,再加上:filetype indent on)

另外,我们关闭vim默认的预览窗口:
:set completeopt=longest,menu

这样,当我们创建了对象,用.或者->的时候,就会自动调出类方法的选择窗口了。

另外一个常见的补全是对函数的补全,也有现成的插件可以用code_complete:http://www.vim.org/scripts/script.php?script_id=1764

这个安装就更简单了,直接把code_complete.vim拷贝到~/.vim/plugin/下面就可以了。

插件的使用方法是,当写完一个函数,并打上左括号(之后,按tab键就可以看倒函数参数列表了,包括重载的函数。

最后,我们不希望记那么多参数,希望使用起来简单一些,我们只需要在bash运行的时候申明我们的两个alias就可以了。在~/.bashrc中添加:

alias vctags='ctags -R --c++-kinds=+p --fields=+iaS --extra=+q'
alias cvim='LC_ALL=C vim'

关闭终端后重启动,可以用type查看我们的新命令已经生效了:

lf426@fleet:~$ type vctags
vctags is aliased to `ctags -R --c++-kinds=+p --fields=+iaS --extra=+q'