首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

自个儿动手扩展vim插件——code_complete.vim篇

2012-11-17 
自己动手扩展vim插件——code_complete.vim篇自己动手扩展vim插件——code_complete.vim篇By 马冬亮(凝霜Loki)

自己动手扩展vim插件——code_complete.vim篇

自己动手扩展vim插件——code_complete.vim篇

By 马冬亮(凝霜  Loki)

一个人的战争(http://blog.csdn.net/MDL13412)

插件简介

        code_complete.vim是一款通用插件,具有用于补全函数参数,插入代码片段等功能。目前插件作者已经将项目迁移到GitHub上进行托管。

        下图是官方的Demo(函数参数补全功能要配合ctags使用):

自个儿动手扩展vim插件——code_complete.vim篇

插件安装        将code_complete.vim拷贝至~/.vim/plugin目录下。        利用Ctags生成tags文件(在代码目录下运行,递归解析当前文件夹),代码如下:

自个儿动手扩展vim插件——code_complete.vim篇

        预处理命令

自个儿动手扩展vim插件——code_complete.vim篇

        头文件包含

自个儿动手扩展vim插件——code_complete.vim篇

        C语言逻辑结构

自个儿动手扩展vim插件——code_complete.vim篇

自个儿动手扩展vim插件——code_complete.vim篇

自个儿动手扩展vim插件——code_complete.vim篇

自个儿动手扩展vim插件——code_complete.vim篇

        主函数

自个儿动手扩展vim插件——code_complete.vim篇

        namespace

自个儿动手扩展vim插件——code_complete.vim篇

        函数参数补全

自个儿动手扩展vim插件——code_complete.vim篇

插件局限性

        通过上面的演示,我们发现了此款插件的一些局限性:

自动补全的代码风格跟我们使用的不同(上面的例子已经改为我自己代码风格)。if else结构、switch结构的分支无法手动指定;用户自定义函数时,没有函数模板可以使用;

插件扩展        自定义代码风格

        下面以if else结构进行说明,我们先查看没有更改前的代码:

        在if的括号中,条件表达式与括号间有一个空格,这和我们的风格不一致,我们可以按照如下代码进行更改:


        对于扩展后的if else结构,其用法为:

                ife[x]<tab>  在插入模式下输入ife,后面接else if()的分支个数,然后按<tab>键展开。

        我扩展了0~9的分支情况,下面给出0~3的代码定义:


        对于扩展后的switch结构,其用法为:

                switch[x]<tab>  在插入模式下输入switch,后面接case的分支个数,然后按<tab>键展开。

        我扩展了1~9的分支情况,下面给出0~3的代码定义:


        通过实例可以看出,使用了函数模板后,减少了我们的输入次数及光标移动次数,很好的提升了编程效率,下面介绍其用法:

                f[x]<tab>  在插入模式下输入f,后面接函数参数的个数,然后按<tab>键展开。

        下面给出0~3个参数的代码:

let g:template['c']['f0']=g:rs."...".g:re."()\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"let g:template['c']['f1']=g:rs."...".g:re."(".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"let g:template['c']['f2']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"let g:template['c']['f3']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"

总结

        此插件目前之扩展了C语言,对于C++的扩展尚未完成,扩展后插件的下载地址:http://download.csdn.net/detail/mdl13412/4674025

        此插件的扩展并不难,读者可以将常用的代码片段扩展进去,提升编码效率。另外,程序员用的编辑器应该具有良好的扩展性:-)

热点排行