标签归档:vim

RSS feed of vim

最后更新于 .

呃,真不知道是我推广有误,还是别的原因。至今组里还是我一个人用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:
=============================================================================*/

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

最后更新于 .

之前的文章已经介绍过vim中实现各种补全,这篇文章我们主要以php为例,实现通过字典补全,来自动补全php函数。

首先,我们从下面的url下载一个php的函数字典文件 http://cvs.php.net/viewvc.cgi/phpdoc/funclist.txt 然后改名字为 php_funclist.txt,并放在vim的安装目录的ExtraVim下(笔者的是C:/vim/ExtraVim)

然后,我们就可以通过如下两行代码来实现将php_funclist.txt字典文件载入到vim中啦~

set dictionary-=$VIM/ExtraVim/php_funclist.txt dictionary+=$VIM/ExtraVim/php_funclist.txt

set complete-=k complete+=k

注意上面的代码中,我的php_funclist.txt的路径是$VIM/ExtraVim/php_funclist.txt,$VIM的意思是vim的安装目录,比如我安装在C:/vim/下面,那么$VIM 就是 ...

最后更新于 .

Vim支持的自动完成种类实际上是很多的,有大家熟知的关键字补全,也有程序开发者经常用到的全能补全。

现在,我们逐一介绍。

1.关键字补全,按键是:

FORWARD:   <C-X><C-N> 

BACKWARD:  <C-X><C-P> 

截图如下:

2.整行补全,按键是:

<C-X><C-L>

截图如下:

3.文件名补全,按键是:

<C-X><C-F>

截图如下:

4.字典补全,按键是(杯具啊,为了这个<C-K>,我把原来的C-K映射都给删掉了):

<C-X><C-K>

截图如下:

对于字典补全,我写了一篇专门用于补全php函数名的文章-《通过vim字典补全,实现php函数名自动补全

5.全能补全,按键是:

<C-X><C-O>

截图如下:

上面的图是调用omnicppcomplete进行类变量补全的结果,对于omnicppcomplete的使用可以参考这篇文章 把VIM打造成一个真正的IDE(3)

OK,所有的补全都介绍完啦,希望对大家有用~~

最后更新于 .

最近需要写一些php的程序,于是研究了一下如何在vim中对php进行语法检查。 其实原理也是和在vim中调用g++/gcc对源文件进行编译是一样的(详见VIM-一键编译单个源文件),也是调用外部程序,然后将错误输出到vim的quickfix中去,为什么要输出到quickfix中?……如果这个都不知道,恐怕也不是在用vim吧……,呵呵,OK,我们进入正题。

先来做准备工作,由于大部分读者应该实在windows下开发,所以我们主要讲解windows下的部署(但是vim的配置代码在linux下一样可以完美执行)。

首先,你需要去下载一个php在windows下的压缩包,然后解压到任何一个地方,进入目录,你会发现一个php.exe。

OK,把这个目录放到环境标量里去。

第二步,打开你的_vimrc,将如下配置写入并保存。

"检查当前文件代码语法(php){{{

function! CheckSyntax()  
    if &filetype!="php"   
        echohl WarningMsg | echo "Fail to check syntax! Please select the right file!" | echohl None   
        return  
    endif  
    if &filetype=="php ...

最后更新于 .

今天无意中发现这样一款插件,众所周知,js在正式上线的时候一般都会经过压缩来减少容量,而一旦你拿到的是这样一个经过压缩的js代码,估计看的头都大了,而这款插件,可以很简单的将js代码变得整齐而有序~ 首先,我们去下载这款插件。下载地址 然后放到plugin目录下。 这时打开一个js文件,我们就可以按下 <leader>ff,来查看效果啦,一般来说,如果没有重新设置过<leader>的话,就是\键。 截图如下: 转换前:

1

转换后:

2

当然,这个插件的官网上还提供了在线整理代码的功能,有兴趣的朋友可以去看一下: http://jsbeautifier.org/ OK,就到这里啦。 版权所有,转载请注明出处.https://www.vimer.cn

最后更新于 .

今天老婆在整理文档的时候希望能快捷的排版某些格式,无奈发现word并不能满足要求,所以就让我用Vim试一下。 问题如下:

1 加州大学伯克利分校 University of California Berkeley 
2 加州大学洛杉机分校 University of California Los Angeles 
3 威斯康星大学麦迪逊分校 University of Wisconsin Madison
4 康乃尔大学 Cornell University 
=伊利诺伊大学厄本那—香槟分校 University of Illinois Urbana Champaign
6 卡内基美隆大学 Carnegie Mellon University 
=斯坦福大学 Stanford University 
=芝加哥大学 The University of Chicago

上面的文字都是用空格隔开的,现在希望拆分成三列,即数字一列,中文一列,英文一列,中间用tab键隔开,因为这样拷贝到excel中的时候直接就是3列。

考虑的步骤如下 ...

最后更新于 .

呵呵,这里说的不是在终端中怎么用tabnew来打开一个新标签,而是说怎么在windows下,用gvim新打开的文件,会默认在gvim的标签页中打开。 这里主要有两种方法,其实原理是一样的(即gvim执行命令的参数是一样的),只是用windows的实现有些区别。

一.利用windows的发送到。

像emeditor之类的编辑器都会在安装之后默认在发送到里面添加自己的快捷方式,而vim是在右键菜单里面直接有一个用vim编辑,而为了不和这个默认的快捷方式冲突,我们就用这个发送到来实现我们想要的在标签页中打开新文件的功能。

1)开始->运行,输入sendto

2)在弹出的窗口中,单击右键,选择新建快捷方式。

3)在需要填入项目位置处(即gvim.exe的路径,以及执行参数),输入

"C:\Vim\vim72\gvim.exe" -p --remote-tab-silent "%*"

注意:需要在路径上加上引号,如默认的安装路径就是在C:\Program Files下,那么需要在路径上加上引号,即

"C:\Program FilesVim\vim72\gvim.exe" -p --remote-tab-silent "%*"

4)输入名字,Vim标签页

5)同时选中两个文件 ...