标签归档:vi

RSS feed of vi

最后更新于 .

呵呵,其实说是vim正则表达式查找替换(3),更主要是对之前没有介绍的vim正则表达式基础知识的补全。毕竟基础搞不清楚,就别指望以后的进阶啦~~

一.vim中常用的正则表示的元

$  匹配一行的结束
^ 匹配一行的开始
\< 匹配一个单词的开始
\> 匹配一个单词的结束
* 匹配0或多次
\+ 匹配1或多次
\= 匹配0或1次
\a      匹配一个字符
\d      匹配任一数字
\u      匹配任一大写字母
[]      匹配范围,如t[abcd]s 匹配tas tbs tcs tds
\{}     重复次数,如a\{3,5} 匹配3~5个a
\( \)   定义重复组,如a\(xy\)b 匹配ab axyb axyxyb axyxyxyb …
\| 或,如:for\|bar 表示匹配for或者bar
\%20c 匹配第20列
\%20l 匹配第20行

二 ...

最后更新于 .

之前已经详细的介绍了在 vim中使用ctags ,这篇文章我们就来详细介绍一下如何在vim中使用cscope。

首先,我们还是了解一下什么是cscope。

简单来讲,cscope主要用来协助浏览C/C++语言,他的功能要强大于ctags,不仅支持变量/函数的定义查询,还记录了函数的调用处查询等功能,所以也有说法称cscope的诞生就是为了取代ctags。

无论这个说法是否有据可依,对使用方来说,当然是希望功能越强大方便越好啦,所以这也是我们为什么讲ctags和cscope都装上的原因啦。

第二,我们来说一下vim的支持。

cscope没有ctags那么幸运,cscope在大部分的linux下的vim中是没有提供支持的(但是在windows下的gvim都提供了支持),所以,如果你打算要在linux下面使用vim+cscope,那么1,你要下载安装cscope。2,你要重新编译vim,加上支持选项: --enable-cscope 。

当然,cscope也提供了windows版(否则windows下gvim怎么和cscope搭配嘛...),分别下载地址如下:

cscope(linux):http://cscope.sourceforge.net/
cscope(windows):http://sourceforge.net/projects/mslk/files/

当然,安装的最后一步就是,不要忘记讲cscope放进的环境变量里!

第三,好了 ...

最后更新于 .

之前有朋友问过我,Vim(gvim)中怎么实现多文件的查找和替换呢?当时确实一直没有考虑过这个问题,因为一直在linux下都有grep,sed这样强力的工具,并不需要vim来实现这样的操作,但是也有很多朋友在windows下也使用gvim来进行编辑,那么就很有必要研究一番了。

第一,多文件查找

vimgrep是vim自带的一个工具,类似于grep的用法就可以实现。比如要在当前目录查找word,使用如下:

:vimgrep word *

如果想要递归查找所有下级目录里面,那么就用

:vimgrep word **

另外,如果想要在使用是快捷查找当前光标下的字母,则只需要在vimrc中添加如下代码:

"对搜索的设置
map ft :call Search_Word()<CR>:copen<CR>
function Search_Word()
let w = expand("<cword>") " 在当前光标位置抓词
execute "vimgrep " . w . " *"
endfunction

通过vimgrep查找到的结果会生成到quickfix中,如下图:

第二,多文件替换

实际上只要如下两个命令即可(假设要将当前目录下所有扩展名为.txt/.cpp的文件中的hate替换成love):

:args *.txt *.cpp
:argdo ...

最后更新于 .

此文过于久远,请参看更新文章: vim(gvim)添加作者信息插件升级版-更智能,支持更多语言

估计大家也都和我一样用过不少的编辑器,什么notepad2,emeditor,editplus,ultraedit,vs2005,sourceinsight,slickedit,emacs,vim(gvim),别看多,我其实还是比许多编辑器疯狂玩家(注意,真的是玩家)收敛多了,当然最后还是本分的从了vim(gvim),呵呵,因为Vim实在能带给我其他编辑器所没有的高效。

很多编辑器都支持在源代码中自动添加作者信息的功能,据我所致sourceinsight就支持,虽然我们的Vim(gvim)默认没有这个功能,但是只需要几行代码自己配置一下,我们一样可以让Vim(gvim)支持自动添加作者信息!

好啦,现在贴出代码如下:

"进行版权声明的设置
"添加或更新头
map <F4> :call TitleDet()<cr>'s
function AddTitle()
    call append(0,"/*============================================
    =================================")
    call append(1,"#")
    call append ...

最后更新于 .

如何在Vim中使用ctags?之前在《把Vim打造成真正的IDE》系列里已经讲过大致的ctags在vim中的使用,这篇文章我们就详细的讲一下。 首先要明白,ctags是什么? 官方的解释是:

产生标记文件以帮助在源文件中定位对象。

其生成的标记文件tags中包括这些对象的列表:

用#define定义的宏 枚举型变量的值 函数的定义、原型和声明 名字空间(namespace) 类型定义(typedefs) 变量(包括定义和声明) 类(class)、结构(struct)、枚举类型(enum)和联合(union) 类、结构和联合中成员变量或函数

那么我们用怎样的参数来使ctags正常的生成我们需要的tags文件呢?在这里我们就不去挨个学习那些枯燥的参数了,直接参看 omnicppcomplete 提供的ctags生成语句:

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

每个参数解释如下:

-R:ctags循环生成子目录的tags --c++-kinds=+px :ctags记录c++文件中的函数声明和各种外部和前向声明 --fields=+iaS ...

最后更新于 .

好了,接着前面的两篇,我们今天来写《把VIM打造成一个真正的IDE》系列的终结篇。

我们之前已经让在VIM下看代码变得方便与简单,现在我们来让用Vim写代码也一样方便~看完本篇之后,你就可以完全抛弃sourceinsight之类的工具啦~

3)omnicppcomplete.vim

实现写C/C++语言时自动补全  下载插件

惯例,先截图:

其实使用很简单,下载 omnicppcomplete 然后按照说明将插件安装到vimfiles下面,目录结构如下:

after\ftplugin\cpp.vim
after\ftplugin\c.vim

autoload\omni\common\debug.vim
                    \utils.vim

autoload\omni\cpp\complete.vim
                 \includes.vim
                 \items.vim
                 \maycomplete.vim
                 \namespaces.vim
                 \settings.vim
                 \tokenizer ...

最后更新于 .

首先需要解释一下,全屏模式-即隐藏了所有标题栏,任务栏之后的效果,截图如下:
vim全屏截图
需要的插件如下:
gvimfullscreen.dll
之后只需要在vimrc中配置如下代码就可以按F11使Vim全屏啦
if has('gui_running') && has("win32")
map <F11> :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>
endif

如果你想在插入模式也可以按下F11全屏的话,那么可以再加上这样一行

imap <F11> :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>

OK啦,现在就可以再全屏模式下编辑VIM而不会受到各种东西的打扰啦,哈哈。

另外说一下,如果只是想要Vim在启动的时候自动窗口最大,可以加入如下代码:
au GUIEnter * simalt ~x

如果要窗口大小恢复:

simalt ~r

要查看支持的命令菜单:

simalt ~

下载gvimfullscreen.dll

下载源码

最后更新于 .

这里简单的给大家介绍一下Vim的查找替换,众所周知,Vim对正则表达式的支持是非常好的,对于程序员来说在分析大量数据的时候,用到Vim的这个功能无疑是件利器。

首先大家要明白vim正则里面的几个特殊含义:

^ 代表行首

$ 代表行尾

\d 代表数字

\D 代表非数字

[x,y,z]:代表各种条件选择

好的,那我们就出几个常用的题目做一下来试一下吧:

1.将以数字开头的行删除

%s/^\d.*$//igc :把这行置成空

%s/^\d.*$\n//igc :把这行直接删掉,包括换行符一起删掉,(注意是\n,而不是\r\n,因为这是针对linux平台,)下一行会到这一行的位置

2.将数字3或者4或者A开头的行删除

%s/^[3,4,A].*$//igc :把这行设置成空

3.

1 IP 202.114.1.1.23444

2 IP ...

最后更新于 .

OK,上一篇文章,我们已经配置好了一个可以正常使用的VIM,那么在我们真正来到程序员的VIM世界之前,希望你能在VIM里面再多加下面几个配置。

set go= "无菜单、工具栏

对,让我真正抛弃鼠标,进入美妙的VIM之旅吧!

首先说说一个IDE应该有的几个功能:

1)源代码结构及函数列表

2)变量定义支持跳转等

3)代码自动补全 当然VIM还给了我们几个小惊喜:

4)快速批量注释与反注释

5)由注释直接生成文档

6)文件头作者信息自动添加

7).cpp和.h文件之间的快速切换

那么接下来,我们久来看看我们将会用到的插件列表。

首先介绍一下一些必备知识,我们需要下面两样东西,来辅助完成vim成为IDE的大业--ctags和cscope,这两样东西不是vim的插件而是可执行程序,linux和windows下都有。ctags主要实现了c、c++、java、c#等语言的智能分析,并声称tags文件,后面所有的包括函数列表显示,变量定义跳转,自动补全等,都要依赖于他。

有了tags文件后,只需要在变量上按下 CTRL + ]键,就可以自动跳到变量定义的位置。

而cscope据说诞生就是为了来替代ctags的,因为他有着比ctags更加强大的功能,举个例子,ctags只能分析出这个函数在哪里被定义 ...