系统小窝欢迎您

电脑公司 深度技术
当前位置:系统小窝 > 系统教程 > Linux教程 >

CentOS 6.2配置vim开发环境的步骤

时间:2021-04-09 来源:般砖的 人气:

vim一款优秀的系统文本编辑器,常用于Linux系统中,使用vim需自行安装,且需要配置其开发环境,那么在CentOS 6.2中,要如何搭建vim开发环境呢?下面小编就给大家介绍下CentOS 6.2配置vim开发环境的方法,一起来学习下吧。

1.首先使用Ubuntu(所在ip为192.168.16.230)翻墙登陆http://www.vim.org/,下载其上面的vim相关插件到Ubuntu的下载目录下:

cd ~/下载/

http://ctags.sourceforge.net

http://cscope.sourceforge.net/

http://www.vim.org/scripts/script.php?script_id=273

http://www.vim.org/scripts/script.php?script_id=1581

http://www.vim.org/scripts/script.php?script_id=197

http://www.vim.org/scripts/script.php?script_id=95

http://www.vim.org/scripts/script.php?script_id=159

http://www.vim.org/scripts/script.php?script_id=31

http://www.vim.org/scripts/script.php?script_id=2620

http://www.vim.org/scripts/download_script.php?src_id=9679

http://www.vim.org/scripts/script.php?script_id=42

http://www.vim.org/scripts/script.php?script_id=311

使用sftp将这些压缩包上传到目标服务器CentOS 6.2上面

cd /usr/local/src

sftp root@192.168.16.237

ls

put a.vim ***

quit

退出sftp,下面开始安装。

2.在主目录下新建目录,开始安装

mkdir -p .vim/plugin

mkdir -p .vim/doc

mkdir -p .vim/tags

mkdir -p ~/.vim/syntax

将上述文件包转移到~/.vim/下面,逐个安装插件:

2.1 ctags插件(Exuberant Ctags)

生成tag文件的插件,从如下官网

http://ctags.sourceforge.net

下载到如下源码包ctags-5.8.tar.gz,下面使用源码安装方式

tar zxvf ctags-5.8.tar.gz

cd ctags-5.8

。/configure

make

make install

cd 。。/

发现ctags是个可执行文件,被复制到/usr/local/bin下面了。你可以使用

ctags --help

来查看该执行文件的命令选项。

tags文件是由ctags程序产生的一个索引文件, ctags程序其实叫;Exuberant Ctags;, 是Unix上面ctags程序的替代品, 并且比它功能强大, 是大多数Linux发行版上默认的ctags程序。

 

2.2 taglist插件

这个是浏览源代码的插件,直接将压缩包解压即可自动安装

unzip taglist_46.zip

会在plugin和doc中各生成一个文件taglist.vim和taglist.txt

相应地在我的.vimrc中如下配置:

let Tlist_Show_One_File = 1 ;不同时显示多个文件的tag,只显示当前文件的

let Tlist_Exit_OnlyWindow = 1 ;如果taglist窗口是最后一个窗口,则退出vim

let Tlist_Use_Right_Window = 0 ;在右侧窗口中显示taglist窗口 (默认是0)

注意taglist插件需要tags文件,所以它需要ctags或cscope生成的tags文件。也就是说,这几个插件是紧密联系的。

2.3 Lookup插件

利用插入补全方式在项目中快速查找文件,缓存区,目录的插件,我们从

http://www.vim.org/scripts/scipt.php?script_id=1581

下载源码包lookupfile-1.8.zip进行安装

unzip lookupfile-1.8.zip

将在doc,plugin,autoload目录下分别生成lookupfile.txt,lookupfile.vim和lookupfile.vim

注意autoload目录是自动生成的。

Lookupfile插件还需最新的genutils插件支持,否则你打开vim时会有警告:

lookupfile: You need a newer version of genutils.vim plugin

从下面的地址下载

http://www.vim.org/scripts/script.php?script_id=197

得到genutils-2.5.zip,下面直接解压就可自动安装好

unzip genutils-2.5.zip

发现它在autoload和plugin目录中都放入了文件genutils.vim

Lookupfile在查找文件时,需要使用tags文件,它可以使用ctags命令生成的tag文件,不过效率比较低,我们专门给它生成了一个包含项目中所有文件名的tag文件。下面是具体步骤:

我编写了下面的shell脚本make_lookupfile_tag.sh,为trafficserver-3.2.4的源代码,生成一个文件名tag文件。

#!/bin/bash

# generate tag file for lookupfile plugin

echo -e ;!_TAG_FILE_SORTED 2 /2=foldcase/; 》 filenametags

find 。 -not -regex lsquo;.*。(png|gif)rsquo; -type f -printf ;%f %p 1 ; |

sort -f 》》 filenametags

回想一下我们在;使用标签(tag)文件;一文中介绍的tag文件的格式。再对照脚本命令来看:

echo命令用来生成filenametags文件中的;!_TAG_FILE_SORTED;行,表明此tag文件是经过排序的。

find命令用来查找所有类型为普通文件,文件后缀名不是.png和.gif的文件,找到的文件按;文件名 文件路径 1Prime;的格式输出出来。

sort命令则把find命令的输出重新排序,然后写入filenametags文件中

在~/program_dev/trafficserver-3.2.4/目录下运行该脚本,

chmod +x make_lookupfile_tag.sh

/bin/bash make_lookupfile_tag.sh

会生成一个名为filenametags的文件,包含了trafficserver-3.2.4目录下的所有文件的名字及其所在目录,你可以打开该文件查看并验证。

现在我们需要让lookupfile插件知道到哪去找文件名tag文件。我们假定vim当前工作目录为~/program_dev/trafficserver-3.2.4/,执行下面的命令:

:let g:LookupFile_TagExpr = lsquo;;。/filenametags;rsquo;

注:如果不设定g:LookupFile_TagExpr的值,那么lookupfile插件会以tags选项定义的文件作为它的tag文件。

当恢复前次会话时,就给lookupfile插件定义了tag文件。

现在我们就可以使用lookupfile来打开文件了,按;《F5》;或输入;:LookupFile;在当前窗口上方打开一个lookupfile小窗口,开始输入文件名(至少4个字符),随着你的输入,符合条件的文件就列在下拉列表中了。文件名可以使用vim的正则表达式,这大大方便了文件的查找。你可以用;CTRL-N;和;CTRL-P;(或者用上、下光标键)来在下拉列表中选择你所需的文件。选中文件后,按回车,就可以在之前的窗口中打开此文件。

2.4 cscope插件

标签跳转插件,从下面的网址下载

http://cscope.sourceforge.net/

得到源码包cscope-15.8a.tar.gz,下面进行源码包安装:

tar zxvf cscope-15.8a.tar.gz

cd cscope-15.8a

ll

。/configure

make

make install

cd 。。/

注意使用下面的命令查看到

which cscope

可执行文件所在路径是/usr/local/bin/cscope

cscope的用法很简单,首先需要在你的工程目录,比如trafficserver-3.2.4下面生成一个cscope数据库,也就是一个索引文件。cscope只在第一次解析时扫描全部文件,以后再调用cscope时,它只扫描那些改动过的文件,这大大提高了cscope生成索引的速度。

 

2.5 BufExplore插件

缓冲区文件浏览插件,从下面的地址下载

http://vim.sourceforge.net/scripts/script.php?script_id=42

直接解压即可自动安装

unzip bufexplorer-7.3.6.zip

将在doc和plugin目录下分别安装bufexplorer.txt和bufexplorer.vim文件。

2.6 winmager插件

该插件控制各插件在vim窗口中的布局显示,从下面的地址下载

http://vim.sourceforge.net/scripts/script.php?script_id=95

得到winmanager.zip文件。

unzip winmanager.zip

把该文件在~/.vim/目录中解压缩,这会将如下文件解压到~/.vim/plugin和~/.vim/doc目录中:

plugin/winmanager.vim ndash; winmanager插件

plugin/winfileexplorer.vim - 改良的Explorer插件

plugin/wintagexplorer.vim ndash; winmanager提供的tag插件,用处不大

doc/winmanager.txt ndash; 帮助文件

注意:winmanager插件需要与BufExplorer插件一起才能使用

2.7 直接是*.vim的插件

这样的插件目前有

a.vim, //将.h文件与.c文件来回切换

minbufexpl.vim //快速浏览和操作Buffer,自如切换

直接复制到~/.vim/plugin/下面就可以了

2.8 vim自带插件

QuickFix 编译纠错,显示查询结果窗口

new-omni-completion 全能补全

2.9 NeoComplCache插件

自动补全插件,下载地址:

http://www.vim.org/scripts/script.php?script_id=2620

将下载下来的压缩包neocomplcache-8.0.zip使用如下命令解压

unzip neocomplcache-8.0.zip

其解压后文件夹里面的文件,好像是四个,autoload、doc、plugin、vest、README.MD,会自动放到.vim相应的文件夹下面。

在~/.vimrc文件里加入自动启动的命令:

let g:neocomplcache_enable_at_startup = 1。

2.10 查看插件自带的文档

注意到上面各步骤中已经把插件自带的文档放入$HOME/.vim/doc目录下了,现在

进入vim,输入命令:helptags $HOME/.vim/doc,vim就会自动读取$HOME/.vim/doc目录下的文档,

输入:help local-additions即可跳转到$HOME/.vim/doc中的所有文档列表处,用选择要看的文档即可。

我们可以看到,当前我们已经安装的插件有taglist,lookupfile,bufexplorer,winmanager插件等。

2.11 安装vim中文帮助文档

vim中文文档的主页是:

http://vimcdoc.sourceforge.net/

它将vim的help文件翻译成为中文,已经支持目前最新的vim 7.3。

如果想使用vim中文文档(.cnx文件),可以遵循以下步骤:

cd ~/.vim/

$wget http://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-1.8.0.tar.gz(注意这不是真实的地址,仅作示例)

tar zxvf vimcdoc-1.8.0.tar.gz

ll

cd vimcdoc-1.8.0

sudo 。/vimcdoc.sh -i

cd 。。/

将会将这些文档安装在/usr/share/vim/,/usr/share/doc等几个目录下面。

启动vim,输入:help,看看帮助文档是否已经便成中文了?

2.12 grep插件

工程中正则查找插件,从下面的地址下载

http://www.vim.org/scripts/script.php?script_id=311

将得到的grep.vim直接放到~/.vim/plugin/下面就可以了。

一些注意事项:

1)vim中文文档不会覆盖原英文文档,安装后vim默认使用中文文档。若想使用英文文档,可在vim中执行以下命令:

:set helplang=en

同理,使用以下命令可重新使用中文文档:

:set helplang=cn

2)使用以下命令可以卸载vim中文文档:

sudo 。/vimcdoc.sh -u

3)帮助文件的文本是utf-8编码的, 如果想用vim直接查看, 需要在~/.vimrc中设置:

:set encoding=utf-8

2.12语法高亮

普通一些的要求是更改色彩方案,设置如下:

首先要在你的 ~/.vimrc 文件中增加下面几句话:

syntax enable

syntax on

选中你喜欢的配色方案,在.vimrc文件中做设置,比如

colorscheme desert

更个性化的需求

让运算符号, 各种括号, 函数名, 自定义类型等也高亮起来

对各种语言的源文件(比如c,c++,php,python等)新建一个语法文件,分别存放到

/usr/share/vim/vim72/syntax/c.vim

下面,以C语言为例,新建一个文件~/.vim/syntax/c.vim

加入以下内容

;========================================================

; Highlight All Function

;========================================================

syn match cFunction ;/《[a-zA-Z_][a-zA-Z_0-9]*/》[^()]*)(;me=e-2

syn match cFunction ;/《[a-zA-Z_][a-zA-Z_0-9]*/》/s*(;me=e-1

hi cFunction gui=NONE guifg=#B5A1FF

;========================================================

; Highlight All Math Operator

;========================================================

; C math operators

syn match cMathOperator display ;[-+/*/%=];

; C pointer operators

syn match cPointerOperator display ;-》/|/。;

; C logical operators - boolean results

syn match cLogicalOperator display ;[!《》]=/=;

syn match cLogicalOperator display ;==;

; C bit operators

syn match cBinaryOperator display ;/(/||/|/^/|《《/|》》/)=/=;

syn match cBinaryOperator display ;/~;

syn match cBinaryOperatorError display ;/~=;

; More C logical operators - highlight in preference to binary

syn match cLogicalOperator display ;/|||;

syn match cLogicalOperatorError display ;/(/|||/)=;

; Math Operator

hi cMathOperator guifg=#3EFFE2

hi cPointerOperator guifg=#3EFFE2

hi cLogicalOperator guifg=#3EFFE2

hi cBinaryOperator guifg=#3EFFE2

hi cBinaryOperatorError guifg=#3EFFE2

hi cLogicalOperator guifg=#3EFFE2

hi cLogicalOperatorError guifg=#3EFFE2

再打开你的C文件看看, 是不是又明亮了许多。 还有一个压箱底的要告诉你, 如果你自己增加了一个类型或者结构之类的, 怎么让它也象;int;, ;void;这样高亮起来呢? 再在上面的文件~/.vim/syntax/c.vim中添加下面的东东:

;========================================================

; My Own DataType

;========================================================

syn keyword cType My_Type_1 My_Type_2 My_Type_3

这样你自己的类型My_Type_1, My_Type_2, My_Type_3就也可以向;int;一样高亮起来了, 这样的缺点是每增加一个类型, 就要手动在这里添加一下。

 

3.配置.vimrc文件

当vim在启动时,如果没有找到vimrc或gvimrc,它缺省工作VI兼容的模式。这意味着,你只能使用VI所具备的功能,而vim中的大量扩展功能将无法使用。也许这就是你的vim如此难用的原因。

vim中自带了一个vimrc例子,以我所在的CentOS 6.2上的为例,使用下面的命令找到这个文件

locate vimrc_example.vim

发现它的真实目录在

/usr/share/vim/vim72/vimrc_sample.vim

将其拷贝到我的主目录下面

cp -f /usr/share/vim/vim72/vimrc_sample.vim ~/.vimrc

或者你在vim中执行下面的命令,和上面的shell命令完成相同的功能:

:!cp $VIMRUNTIME/vimrc_example.vim ~/.vimrc

现在,你退出vim后再进入,你的vim和刚才已经不一样了。

你可以先读一下你的vimrc,看看它都设定了什么:

:e ~/.vimrc

这是一个注释良好的文件,不需要多解释。

在今后使用vim的日子里,你会频繁的更改你的vimrc。所以我们需要设置一些快捷方式,使我们能快速的访问vimrc。

把下面这段内容拷贝到你的vimrc中:

1 ;Set mapleader

2 let mapleader = ;;;

3

4 ;Fast reloading of the .vimrc

5 map 《silent》 《leader》ss :source ~/.vimrc《cr》

6 ;Fast editing of .vimrc

7 map 《silent》 《leader》ee :e ~/.vimrc《cr》

8 ;When .vimrc is edited, reload it

9 autocmd! bufwritepost .vimrc source ~/.vimrc

为了方便解释,我给每一行都加了一个行号。

在vimrc中,双引号开头的行,将被当作注释忽略。

第2行,用来设置mapleader变量,当mapleader为未设置或为空时,使用缺省的;;来作为mapleader。mapleader变量是作用是什么呢?看下面的介绍。

第5行定义了一个映射(map),这个映射把《leader》ss,映射为命令:source ~/.vimrc《cr》。当定义一个映射时,可以使用《leader》前缀。而在映射生效时,vim会把《leader》替换成mapleader变量的值。也就是说,我们这里定义的《leader》ss在使用时就变成了;,ss;,当输入这一快捷方式时,就会source一次~/.vimrc文件(也就是重新执行一遍.vimrc文件)。

第7行,定义了《leader》ee快捷键,当输入,ee时,会打开~/.vimrc进行编辑。

第9行,定义了一个自动命令,每次写入.vimrc后,都会执行这个自动命令,source一次~/.vimrc文件。

有了上面的快捷键,我们就能快速的打开vimrc文件编辑,快速重新source vimrc文件,方便多了。

相关的配置文件参见赵攀提供的.vimrc文件的内容。

注意:最后的源码结构类似如下:

~--|--.vimrc

|--.vim --|-plugin--

|-doc--

|-autoload

|-vest

4.实战体验

4.1下载一个trafficserver的源码,并以此为例来阐释使用vim开发的方法

登陆192.168.16.237上,并在当前主目录上新建一个program_dev目录

ssh root@192.168.16.237

cd ~/

mkdir program_dev

wget http://mirror.esocc.com/apache/trafficserver/trafficserver-3.2.4.tar.bz2

下载完成后,解压缩

tar jxvf trafficserver-3.2.4.tar.bz2

ll

注意:使用首先生成3种类型的标签,分别是ctags,cscope和lookupfile插件需要用到的标签。

4.2生成ctags标签(请参照下一种方法来生成tags并设置)

ctags -R trafficserver-3.2.4

将在trafficserver-3.2.4同级目录生成一个名为tags的文件

现在进入vim环境,输入以下命令

:cd ~/program_dev/trafficserver-3.2.4 ;切换到当前源码目录

:set tags=~/program_dev/tags ;设置tags选项为当前目录下的tags文件

注意这里设置tags需要明确写出绝对路径,否则将会导致很多函数找不到。tags文件是个纯文本文件,你可以使用vim打开它看一下。

另外,根据.vimrc中的配置,使用下面的快捷键来分别生成tags文件和cscope文件

cd trafficserver-3.2.4

find lsquo;pwdrsquo; -name ;*.cpp; -o -name ;*.cc; -o -name ;*.c; -o -name ;*.h; 》 cscope.files

cscope -bqk -i cscope.files

ctags和cscope会自动区分和处理各自的索引。

这里注意使用cscope的方法,cscope在生成索引文件时,只搜索c,lex和yacc的文件(后缀名为.c,.h,.l,.y),要生成c++的文件索引,就得使用上面的方法,先产生一个文件列表cscope.files,然后让cscope为这个列表中的每个文件都生成索引。

将上述内容写成一个脚本make_cscope_ctags_index.sh,其内容如下:

#!/bin/bash

find 。 -name ;*.h; -o -name ;*.c; -o -name ;*.cc; 》 cscope.files

cscope -bkq -i cscope.files

ctags -R

保存在~/.vim/中,现在将其复制到trafficserver-3.2.4下面,并运行下面的命令

/bin/bash make_cscope_ctags_index.sh

命令在trafficserver-3.2.4下面生成如下文件

cscope.files

cscope.in.out

cscope.out

cscope.po.out

tags

 

经过分析cscope.files,我们看到了很多文件。现在更新tags设置项

:set tags=~/program_dev/trafficserver-3.2.4/tags

至此,我们设置好了tags选项,接下来开始使用它:

在当前命令行输入

vim -t main

这个命令将打开定义;main;(变量或函数或其它)的文件,并把光标定位到这一行。

在浏览源码时,当要查询某个函数的定义时,将光标放在该函数上,按《C-]》键,就会跳转到该函数的定义处,按《C-t》键是返回。

注意:运行vim的时候,必须在;tags;文件所在的目录下运行。否则,运行vim的时候还要用;:settags=;命令设定;tags;文件的路径,这样vim才能找到;tags;文件。

在完成编码时,可以手工删掉tags文件(帚把不到,灰尘不会自己跑掉^_^)。

现在打开编号为43的文件中的main函数

按F9打开winmanager,这时按照设置,将会出现3部分窗口布局。如果打开了多个文件(多缓冲区),将在最上角出现第四个窗口,MiniBufExplorer窗口。现在按住Ctrl,再连续按W,将在各个窗口之间按照逆时针顺序来回切换。当然,按照赵攀的文档,使用F2也一样起到该作用。再按一次F9将关闭winmanager窗口布局。

当选中某个窗口时,都可以使用vim通常的移动鼠标的方式来选择不同的标签等,比如gg,G等快捷键。

将光标定位到main函数所在的文件中,将光标定位到某个函数上,按住Ctrl+]键,将会跳转到该函数的定义位置。

4.3快速浏览和操作Buffer

用vim打开多个文件时,vim最上方会出现一个MiniBufExplorer窗口,其中列出了当前所有已经打开的buffer,当你把光标置于这个窗口时(当你处于winmanager窗口布局中时,使用Ctrl+W来轮流切换), 有下面几个快捷键可以用:

《Tab》 向前循环切换到每个buffer名上

《S-Tab》 向后循环切换到每个buffer名上

《Enter》 在打开光标所在的buffer

d 删除光标所在的buffer

当你只编辑一个buffer的时候MiniBufExplorer派不上用场, 当你打开第二个buffer的时候, MiniBufExplorer窗口就自动弹出来了,

4.4bufexplorer插件用法

打开vim,输入e在当前窗口浏览缓存,s水平打开一个窗口浏览缓存,v垂直打开一个窗口浏览缓存。

但是在Filelist和taglist的窗口内,你可以移动上下移动光标,使用ghjk这四个键

附注:

:cw change-word 改变到下一个词的尾部,不含词后面的空格

4.5Taglist窗口的快捷键操作

在taglist窗口中,可以使用下面的快捷键:

《CR》 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样

o 在一个新打开的窗口中显示光标下tag

《Space》 显示光标下tag的原型定义

u 更新taglist窗口中的tag

s 更改排序方式,在按名字排序和按出现顺序排序间切换

x taglist窗口放大和缩小,方便查看较长的tag

+ 打开一个折叠,同zo

- 将tag折叠起来,同zc

* 打开所有的折叠,同zR

= 将所有tag折叠起来,同zM

[[ 跳到前一个文件

]] 跳到后一个文件

q 关闭taglist窗口

《F1》 显示帮助

可以用;:TlistOpen;打开taglist窗口,用;:TlistClose;关闭taglist窗口。或者使用;:TlistToggle;在打开和关闭间切换。在我的vimrc中定义了下面的映射,使用《F9》键就可以打开/关闭taglist窗口:

map 《silent》 《F8》 :TlistToggle《cr》

按照;typedef;, ;variable;, ;function;等进行了分类。 将光标移到VimMain上, 如图中左边红色的方框, 按下回车后, 源程序会自动跳转到VimMain的定义处, 如图中右边的红色方框。 这就是TagList最基本也是最常用的操作。在浏览TagList窗口时, 如果还不想让源码跳转, 但是想看看tag在源码中完整的表达, 可以将光标移到你想要看的tag上, 如图中上边黄色的方框, 然后按下空格键, 在下面的命令栏中, 如图下边黄色的方框, 会显示该tag在源码中完整的写法, 而不会跳转到源码处。

4.6cscope插件用法

在vim中使用cscope非常简单,首先调用;cscope add;命令添加一个cscope数据库,然后就可以调用;cscope find;命令进行查找了。vim支持8种cscope的查询功能,如下:

s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方

g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能

d: 查找本函数调用的函数

c: 查找调用本函数的函数

t: 查找指定的字符串

e: 查找egrep模式,相当于egrep功能,但查找速度快多了

f: 查找并打开文件,类似vim的find功能

i: 查找包含本文件的文件

例如,我们想在vim 7.0的源代码中查找调用do_cscope()函数的函数,我们可以输入:;:cs find c do_cscope;,回车后发现没有找到匹配的功能,可能并没有函数调用do_cscope()。我们再输入;:cs find s do_cscope;,查找这个C符号出现的位置,现在vim列出了这个符号出现的所有位置。

我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能,但它是在交叉索引数据库中查找,速度要快得多。

cscope的主要功能是通过同的子命令;find;来实现的

;cscope find;的用法:

cs find c|d|e|f|g|i|s|t name

0 或 s查找本 C 符号(可以跳过注释)

1 或 g查找本定义

2 或 d查找本函数调用的函数

3 或 c查找调用本函数的函数

4 或 t查找本字符串

6 或 e查找本 egrep 模式

7 或 f查找本文件

8 或 i查找包含本文件的文件

vim提供了一些选项可以调整它的cscope功能:

cscopecscopeprg选项用于设置cscope程序的位置。

cscopecscopequickfix设定是否使用quickfix窗口来显示cscope的结果,详情请;:help cscopequickfix;;

如果你想vim同时搜索tag文件以及cscope数据库,设置cscopecscopetag选项;

cscopecscopetagorder选项决定是先查找tag文件还是先查找cscope数据库。设置为0则先查找cscope数据库,设置为1先查找tag文件。我通常设置为1,因为在tag文件中查找到的结果,会把最佳匹配列在第一位。

vim的手册中给出了使用cscope的建议方法,使用命令;:help cscope-suggestions;查看。

 

下面是我的vimrc中关于cscope接口的设置:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; cscope setting

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

if has(;cscope;)

set csprg=/usr/bin/cscope

set csto=1

set cst

set nocsverb

; add any database in current directory

if filereadable(;cscope.out;)

cs add cscope.out

endif

set csverb

endif

nmap 《C-@》s :cs find s 《C-R》=expand(;《cword》;)《CR》《CR》

nmap 《C-@》g :cs find g 《C-R》=expand(;《cword》;)《CR》《CR》

nmap 《C-@》c :cs find c 《C-R》=expand(;《cword》;)《CR》《CR》

nmap 《C-@》t :cs find t 《C-R》=expand(;《cword》;)《CR》《CR》

nmap 《C-@》e :cs find e 《C-R》=expand(;《cword》;)《CR》《CR》

nmap 《C-@》f :cs find f 《C-R》=expand(;《cfile》;)《CR》《CR》

nmap 《C-@》i :cs find i ^《C-R》=expand(;《cfile》;)《CR》$《CR》

nmap 《C-@》d :cs find d 《C-R》=expand(;《cword》;)《CR》《CR》

先在~/vimrc中增加一句:

:set cscopequickfix=s-,c-,d-,i-,t-,e- 这个是设定是否使用 quickfix 窗口来显示 cscope 结果, 用法在后面会说到。

我想查找vim_strsave()到底在那些地方被调用过了, 用命令:

:cs find c vim_strsave 按下回车后vim会自动跳转到第一个符合要求的地方, 并且在命令栏显示有多少符合要求的结果, 如图:

如果自动跳转的位置你不满意, 想看其他的结果, 可以用下面的命令打开QuickFix窗口:

:cw 如图:

4.7 quickfix窗口

QuickFix窗口的主要作用就是上面看到的那个功能: 输出一些供选择的结果, 可以被很多命令调用, 更详细的介绍和使用方法请用下面的命令打开QuickFix的手册来学习吧:

:help quickfix

可以用下面的命令来跳转:

:cn // 切换到下一个结果

:cp // 切换到上一个结果 如果你经常使用这两个命令, 你还可以给他们设定快捷键, 比如在~/.vimrc中增加:

nmap 《F6》 :cn《cr》

nmap 《F7》 :cp《cr》

5.产生的疑问

5.1 cscope和ctags有啥区别?

两者能并存,前者更强大,特别是查找字符串,前者威力更大。ctags是跳转到标签定义的地方,但如果想查找函数在哪里被调用,或者标签在哪些地方出现过,就需要使用更为强大的cscope。

Cscope是一个交互式的屏幕下使用的工具,它被设计用来回答以下的问题:

* 什么地方用到了这个符号?

* 这是在什么地方定义的?

* 这个变量在哪里被赋值?

* 这个全局符号的定义在哪里?

* 这个函数在源文件中的哪个地方?

* 哪些函数调用了这个函数?

* 这个函数调用了哪些函数?

* 信息 ;out of space; 从哪来?

* 这个源文件在整个目录结构中处于什么位置?

* 哪些文件包含这个头文件?

上面就是CentOS 6.2配置vim开发环境的方法介绍了,从本文的介绍方法中可以看出,vim开发环境的配置内容较多,搭建的时候要有耐心,且该方法只适用于CentOS 6.2版本。

相关文章

  • 如何在Linux中使用Ctags工具快速查找源码

    如何在Linux中使用Ctags工具快速查找源码

    Ctags工具主要用来遍历源码文件,快速查找定位源码中的符号,那么Linux下要如何使用Ctags来查找源码呢?下面随小编一起来学习下Linux下使用Ctags查找源码的...
    2014-12-15 05.12.16
  • Linux如何使用vi/vim命令

    Linux如何使用vi/vim命令

    vi是文本编辑器,而vim是类似于vi的文本编辑器,是代码编辑比较实用的工具,下面小编就给大家介绍下Linux如何使用Vi、Vim命令,感兴趣的朋友一起来了解...
    2015-01-04 05.01.18
  • Ubuntu无法安装vim怎么办?

    Ubuntu无法安装vim怎么办?

    vim文本编辑器是由vi发展而来的,拥有丰富的编辑功能,Linux系统经常会用到vim文本编辑器。在Ubuntu系统中,vim文本编辑器存在无安装的问题,遇到这种问题...
    2015-01-09 03.01.16
  • Linux vim显示utf-8文档乱码怎么办?

    Linux vim显示utf-8文档乱码怎么办?

    在Linux系统操作证,Vim是文本编辑器,在使用Vim的时候,居然显示utf-8文档乱码,遇到这种情况要如何解决呢?下面小编就给大家介绍下Linux如何解决Vim显示...
    2015-01-30 11.01.22
  • Linux如何安装和使用NeoBundle

    Linux如何安装和使用NeoBundle

    Linux系统要想使用Vim编辑器,就要安装Vim插件,(Vim插件的安装可以参考系统之家Ubuntu安装vim插件的步骤),而适时的管理Vim插件就很有必要的,而NeoBund...
    2015-01-30 02.01.46

发表评论

验证码: 看不清?点击更换

注:网友评论仅供其表达个人看法,并不代表本站立场。