标签归档:vi

RSS feed of vi

最后更新于 .

呃,真不知道是我推广有误,还是别的原因。至今组里还是我一个人用vim做开发环境,大家倒是对vim的正则表达式更感兴趣,当然,实际上是,对让我帮忙操作更感兴趣…… 今天小组有一次大的对外数据迁移,同事有个需求,要在一个300多万行的文本文件中,将前150多万删掉…… 于是,我打开vim,到150多万行,然后dgg。 结果,可想而知……死机…… 同事转而求其他,用awk命令…… 脚本如下:

awk 'NR>1759668 {print $1" "$2}' uin_newopenid_0 >uin_newopenid_0_haha

上面命令的意思就是,将大于1759668行的号码,从 uin_newopenid_0 中写入到 uin_newopenid_0_haha,相当于间接实现了删除操作。 整个过程不到5秒…… 唉,果然用正确的工具做正确的事情才是王道啊。 不过我还是强烈推荐大家用vim做代码编辑器,IDE~~~~~ 哈哈,就这样啦~ 版权所有,转载请注明出处.https://www.vimer.cn

最后更新于 .

在使用C++时,我们经常会使用到STL,相信很多人都想过,如果vim能实现stl库自动补全就好啦,这篇文章,我们就来实现这一点。 (文中所有操作均在windows下进行,在linux也一样可以实现,笔者就不写了)

1.请确保安装好了ctags,和omnicppcomplete;如果你还没有安装好,请参考这两篇文章:把VIM打造成一个真正的IDE(2)把VIM打造成一个真正的IDE(3)

2.下载STL库的头文件和实现。下载路径如下: http://www.vim.org/scripts/script.php?script_id=2358

OK,现在工具已经准备齐了,接下来就是生成tags啦。 去刚下载的STL目录,用ctags命令生成tags文件,命令如下:

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

(如果你看了我之前的文章,那么直接用F12生成就行)

有了tags之后,你可以把这个tags换个名字,比如叫stl_tags,然后放到C盘,通过命令

set tags ...

最后更新于 .

这几天在写一个项目,其中有用到打包和解包的网络通信,相信有过网络编程经验的朋友应该都知道,无非就是 将一个结构体打包成一段buff,以及反向的过程。(这里我们不考虑直接memcpy的情况,因为结构体里的字段有可能只是指针,当然如果都是定长数据的话,那么memcpy当然是最快的) 而在这个过程中,很多代码只是改了很少一部分,但是却要分别写两个函数,严重浪费了人力,而且容易出错。现在让我们看一下,能否用vim来替我们自动完成这件枯燥的事情。 我们来看这样一段示例代码:

int Output( unsigned int ver, char* & buf, int & iLen, int iMaxLen )
{
    int needLen = sizeof(char) * 3 + sizeof(short) + sizeof(int);
    if( needLen > iMaxLen )
    {         
        return FBErrSystemNoMem;
    }     
    char *t_Buff = buff;
    *(unsigned char *) t_Buff = placeId;
    t_Buff += sizeof ...

最后更新于 .

这几天给vim写了许多新功能,包括自动添加#ifndef,#define,#endif,以及在变更代码时自动对代码进行相关操作时间和操作人等,我就慢慢来写吧~~ 首先说一下自动添加宏定义的这个功能,其实在自己写之前,我在网上google过一次,试图找出一份前辈们已经有的代码,结果最终还是失望而回。可能因为我输入的关键词不对,可能是搜索引擎不准,总之,我最后还是得自己写啦,希望我写的每一篇文章都能对大家起到帮助吧~~~ 首先说一下实现的功能 1.自动根据文件名,生成 宏定义的名字,例如 temp.h ,就生成 _TEMP_H_ 2.由于我通常在源代码中会加入这样的作者信息:

/*=============================================================================
#     FileName: 
#         Desc: 
#       Author: dantezhu - https://www.vimer.cn
#        Email: zny2008@gmail.com
#      Version: 0.0.1
#   LastChange: 2011-02-21 18:06:30
#      History:
=============================================================================*/

所以希望能在生成时加上判断,一旦发现有这样的定义,那么宏定义是要放在作者信息之后的。 至于怎样生成作者信息 ...

最后更新于 .

之前有用正则表达式写过一个重复两行压缩成一行的命令,今天我们来看一个讲重复多行压缩成一行的命令。 首先,我们先考虑怎么查出多个重复行。 有两种方法,但是有一种是有bug的,罗列如下:

1)

^\(.*\)\(\n\1\)\+$

2)

^\(.*\n\)\(\1\)\+

详细讲解一下:\+是代表匹配>1个,\1代表是前面的匹配,那么可以看出: 第1种方法是匹配了整个行(不包括换行符),然后加上\n\1,匹配\n\1 >1次,最后匹配到最后一个重复行行尾的换行符,从而匹配到所有重复行。 如图:

删除重复行1

第2种方法则是先匹配了整个行(包括换行符),然后匹配\1 >1次,最后匹配到所有重复行。 如图: 删除重复行2

但是实际上第二种匹配规则是有bug的,即假设最后一个重复行后面再也没有换行符的话,那么是匹配不到的,如图: 第一种方法:

删除重复行3

第二种方法:

删除重复行4

到此为止,既然查找的方法已经出来了,那么替换的方法也就有了

:%s/^\(.*\)\(\n\1\)\+$/\1/

OK,就到这里啦~~~ 

最后更新于 .

这个pdf是我同事的一次分享的,写的很诙谐有趣,但是又精准的抓住要害,突出了vim的优势和便利之处,所以就放在这里和大家分享一下,当然版权是归我同事所有啦~~ 唉,又要费我4兆的空间啊…… vim-hacks下载   转载请注明出处.https://www.vimer.cn

最后更新于 .

    开源文本编辑器Vim的作者Bram Moolenaar推出了新的编程语言Zimbu,一种不拐弯抹角直截了当的实验性编程语言。Moolenaar表示Zimbu集现有语言的优点于一身,同时避开它们的不足。Zimbu代码清晰易读,使用范围广泛——既能写OS kernel,又能写脚本,还能写大的GUI程序,可以编译和运行在几乎所有系统上。Zimbu代码托管在Google Code上,采用Apache License 2.0许可证。     这是前几天在晚上看到的一篇报道,后面也有了一些评论,无非就是一些诋毁之类的文字,发现大众除了乱喷之外还真是一点别人的优点都看不到~     说起来,因为这个我特地仔细的看了一下这位vim作者的介绍:居住在荷兰,从事开源软件的开发,大部分收入来自开源软件使用者的捐赠,还把大量的捐款送给了乌干达的孩子们。的确很厉害的一个人,我突然想起之前在一篇博客里看到的一段话,有的软件,不花钱你都懒得用,而有的软件,你会忍不住想捐赠作者来支持她的开发。而vim真的就是这样一款软件。     已经用vim 4年了,从大学开始一直到上班,写的代码越来越不一样,用的编辑器却从来没有变过。     我在努力,希望能在我成功的时候,亲自好好答谢我这位老朋友。 转载请注明出处.https://www.vimer.cn

最后更新于 .

    OK,继续我们的Vim正则查找替换系列~~,这一次主要有两个技巧,第一个是=的整理,第二个是vim实现固定区域的查找替换。     呃,不知道到底是带给我们的这个习惯了,似乎大家在写int a=1;的时候都喜欢在=左右都加上两个空格,编程int a = 1;但是有时候面对别人写的代码,并不是这样的风格就会很想帮他改一下,怎么办呢?vim呗~~     命令如下:    

:%s/\s*=\s*/ = /g

   

这样的话,vim就会自动帮你完成啦,当然看语句也能看出来,他是只要匹配到=就会帮你自动编程 = ,所以对于那些注释和字符串中的=也有可能帮你误转,笔者没有想到什么好的方法,你可以在g后面加个c,即    

:%s/\s*=\s*/ = /gc

   

这样每次替换都会要求你确认,呵呵,不过也有点麻烦哦……    

好啦,接下来是vim中的区域查找替换,vim这么强大的工具当然是支持只替换一部分文本啦,那么怎么实现呢?     ...

最后更新于 .

之前在vim下一直是用幼圆看中文(参见我的另一篇文章:Vim(gvim)编程字体推荐),效果其实还是很不错的,但是对于开启了cleantype的系统来说,微软雅黑可能是一个更好的选择。

后来也有朋友说很想在gvim下面使用微软雅黑,所以这次就和大家分享一下。    

之前不使用微软雅黑的原因也是很明显的,因为gvim默认的字体列表里面并不支持微软雅黑,至于原因网上也都说的很清楚了,也有人自己编译了gvim的全字体版提供下载,但是相信大部分人是和我一样,宁愿改字体也不想改gvim(vim)本身吧,呵呵。    

但是呢!只要vimer们想做的事情,那就绝对没有做不到的!~~~~

下面秀一下我的gvim中使用微软雅黑+Bitstream vera sans mono的样子~~    

10px(适合<14英寸屏幕)

   

10.5px(适合>17英寸屏幕)

哈哈,怎么样,是不是比幼圆精致很多啊!赶紧去试一下吧!~~

分别的配置代码如下:

10px

set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI 
set gfw=Yahei_Mono:h10:cGB2312

10.5px

set ...

最后更新于 .

网上从来不缺编程字体推荐的文章,当然vim(gvim)字体的推荐文章也是多不胜数,但是大部分都是想当然的认为哪些字体好用就介绍出来,甚至都没有自己亲自试过,也没有考虑过用户使用19英寸的显示器和14英寸的笔记本时对字体的要求到底有什么不同,鉴于以上几点,我决定写这样一篇文章,真正介绍vim(gvim)中最适合的编程字体。 注:由于vimrc中中文字体的设置需要用到中文,所以请务必保证vimrc的编码是gbk格式,如果不是gbk格式,可以通过1.打开vimrc。2.:set fenc=gbk 3.:w。的操作来解决。

一.17~19(或更大)英寸屏幕    

1)英文字体:    

名字:Bitstream Vera Sans Mono    

大小:10px        

在vimrc中的配置如下:

set guifont=Bitstream_Vera_Sans_Mono:h10:cANSI

优点:        

a)0 O ...