最近正在忙着做一个新的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

怎么样,如果想写个脚本其实也是很简单的吧~

版权所有,转载请注明出处.http://www.vimer.cn

Vim(gVim)对排序的妙用

前段时间有博友在群里问了一个关于vim排序的问题,因为时间问题一直没帮忙解决,今天时间正好空出来,就帮忙搞了一下。 原文的问题如下: ...

阅读全文

vim(gVim)统计字节、字符数

前段时间在做文件扫描的时候,有一些关于字节、字符数统计的需求,考虑到有同学也可能用的到,所以整理一下记录在这里。 1.统计当前字符之前的所有字节数 ...

阅读全文

糗事百科网站改版,对应qiushibaike.vim插件升级

前不久糗百改版,所以原有的qiushibaike.vim插件用起来会有一些问题,今天有时间就修改了一下. 如图: 下载地址: http://www.vim.org/scripts/script.php?scr...

阅读全文

8则回应给“饭前甜点-vim(gvim)自动在cpp文件中添加.h文件包含”

  1. kitten说道:

    我一直在用snipmate,按下Inc就能自动补全了,当然还是慢了些

    [回复]

    Dante 回复:

    呃,我一直还是尽量自己实现想要的功能……毕竟vim可以这么完美的自定义~~

    [回复]

  2. 扭蛋扭蛋说道:

    偶尔发现这个博客,还不错,谢谢楼主的分享,本人也对vim情有独钟,希望以后多多交流

    [回复]

    Dante 回复:

    哈哈,多多交流啊~~~ 我也对vim情有独钟~~~ 嘿嘿

    [回复]

  3. Jansen.wang说道:

    博主的老婆大人对计算机英语貌似很在行,我这几天也在写一个插件,苦于英语水平不行,不知道能否请您的老婆大人代为翻译一下,感激不尽

    [回复]

    Dante 回复:

    哈哈,仅供个人使用,不外传哦~~

    [回复]

  4. karlzheng说道:

    nsertIncludeFileN跟nsertIncludeFileI不是一样的吗?

    [回复]

    Dante 回复:

    呃。。。看了看还真一样。。可能之前有不一样的部分后来被删掉了吧。。。

    [回复]

发表评论