最近正在忙着做一个新的vim插件,功能可以说是完全为技术用家准备的,当然非技术用户也可以非常好的使用,代码已经写完了,中文介绍文档也已经ok了,剩下的就是老婆大人那边帮忙翻译出英文版的啦~ OK,废话不多好,为了过几天就会端出来的正餐,今天先给大家一些小甜点吧 今天主要是想实现在cpp文件中,自动添加.h文件的引用. 即在一个class1.cpp中,能够自动的添加一行代码
#include "class1.h"
其实这个功能可以说是很简单了,但是习惯偷懒的我,确实忍受不了每次都要去写一遍代码: vim脚本如下(特别说一下,有朋友反映我的vim脚本代码总是不高亮,结果换成高亮的html代码之后,总是保存出现问题,郁闷了,看样子还是继续调整一下):
function InsertIncludeFileI()
let sourcefilename=expand("%:t")
let outfilename=substitute(sourcefilename,'\(\.[^.]*\)$','.h','g')
call setline('.','#include "'.outfilename.'"')
endfunction
imap <c-b><c-h> <ESC>:call InsertIncludeFileI()<CR>
function InsertIncludeFileN()
let sourcefilename=expand("%:t")
let outfilename=substitute(sourcefilename,'\(\.[^.]*\)$','.h','g')
call setline('.','#include "'.outfilename.'"')
endfunction
nmap ,hh :call InsertIncludeFileN()<CR>
相信也不需要我多做解释了吧~~把这段脚本放到你的vimrc文件中就可以用啦~ 这段脚本中用到了expand("%:t")
简单介绍下expand中传入参数不同,得到的结果列表
例如文件: c:/vim/test.cpp
expand("%:t") : test.cpp
expand("%") : test.cpp
expand("%:e") : cpp
expand("%:t:r") : test
怎么样,如果想写个脚本其实也是很简单的吧~
kitten on #
我一直在用snipmate,按下Inc就能自动补全了,当然还是慢了些
Reply
Dante on #
呃,我一直还是尽量自己实现想要的功能……毕竟vim可以这么完美的自定义~~
Reply
扭蛋扭蛋 on #
偶尔发现这个博客,还不错,谢谢楼主的分享,本人也对vim情有独钟,希望以后多多交流
Reply
Dante on #
哈哈,多多交流啊~~~ 我也对vim情有独钟~~~ 嘿嘿
Reply
Jansen.wang on #
博主的老婆大人对计算机英语貌似很在行,我这几天也在写一个插件,苦于英语水平不行,不知道能否请您的老婆大人代为翻译一下,感激不尽
Reply
Dante on #
哈哈,仅供个人使用,不外传哦~~
Reply
karlzheng on #
nsertIncludeFileN跟nsertIncludeFileI不是一样的吗?
Reply
Dante on #
呃。。。看了看还真一样。。可能之前有不一样的部分后来被删掉了吧。。。
Reply