`

搭建linux C语言开发环境——redhat9+vim+ctags+taglist+cscope

 
阅读更多

搭建linux C语言开发环境——redhat9+vim+ctags+taglist+cscope

 

配置VIM:

      首先,安装vim,一般情况下在安装redhat时,默认就安装了vim。你可以用vim -v来查看你的系统是否安装了vim。如果显示了vim版本就表示已经安装了vim,否则你可以通过“从这里开始”-->“系统设置”--> “添加/删除应用程序”,然后选中“编辑器”来更新你的软件。安装之后就要通过配置.vimrc配置符合自己风格的vim了。接下来就要找 到.vimrc,如果你上网查找一些相关的资料时,他们会告诉你:在用户主目录——/home/root/下有一个.vimrc文件,在/etc/目录下 也有一个vimrc。但是,也许你找了很久都没有找到这两个文件,这很正常,因为在刚安装上vim时,在以上两个目录中确实没有这两个文件,换句话说,这 两个文件是认为加上去的。要找到你的vimrc,首先用vim打开一个文件,然后在vim中输入指令":version" ,你会看到"系统vimrc配置文件:/usr/share/vim/vim61/macros/vimrc",然后将这个文件拷贝到你的主目录 下,cp  /usr/share/vim/vim61/macros/vimrc  /root/ ,将vimrc改名为隐藏文件,mv vimrc .vimrc。接下来打开.vimrc,在里面添加几个条目:

set number    " turn on line number——开启行号显示

set mouse     " use mouse everywhere——开启鼠标功能

set cindent    " do c-style indenting——使用C风格缩进

这样,vim基本就配置完成了。当然在编辑.vimrc时可以根据个人的喜好设置,具体的设置项可以使用:help命令查看,或者上网查查吧。

 

配置ctags:

      首先到http://ctags.sourceforge.net/ 下 载ctags-5.8.tar.gz  , 注意:有些浏览器(例如IE8)会阻止文件下载,这时只需要解除阻止即可进入下载界面。然后安装ctags.

#tar xzvf ctags-5.8.tar.gz

#cd ctags-5.8

#./configure

#make

#make install

注意:如果你在执行./configure时出现错误,那么很有可能就是你的gcc没有安装完全,解决方法——“从这里开始”-->“系统设 置”-->“添加/删除应用程序”,然后选择“开发工具”,更新你的gcc编译器。安装完成后就可以使用ctags命令了。

#ctags -R *
"-R"表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。"tags"文件中包括这些对象的列表:
l         用#define定义的宏
l         枚举型变量的值
l         函数的定义、原型和声明
l         名字空间(namespace)
l         类型定义(typedefs)
l         变量(包括定义和声明)
l         类(class)、结构(struct)、枚举类型(enum)和联合(union)
l         类、结构和联合中成员变量或函数
VIM用这个"tags"文件来定位上面这些做了标记的对象,下面介绍一下定位这些对象的方法:
1) 用命令行。在运行vim的时候加上"-t"参数,例如:
[/home/brimmer/src]$ vim -t foo_bar
这个命 令将打开定义"foo_bar"(变量或函数或其它)的文件,并把光标定位到这一行。
2)在vim编辑器内用":ta"命令,例如:
:tag  foo_bar
3)最方便的方法是把光标移到变量名或函数名上,然后按下"Ctrl-]"。用"Ctrl-o"退回原来的地方。
注 意:运行vim的时候,必须在"tags"文件所在的目录下运行。否则,运行vim的时候还要用":set tags="命令设定"tags"文件的路径,这样vim才能找到"tags"文件。
在函数中移动光标
[{ 转到上一个位于第一列的"{"
}] 转到下一个位于第一列的"{"
{    转到上一个空行
}    转到下一个空行
gd 转到当前光标所指的局部变量的定义
*   转到当前光标所指的单词下一次出现的地方
#   转到当前光标所指的单词上一次出现的地方

配置taglist

首先下载taglist_45.zip,下载地址http://www.vim.org/scripts/script.php?script_id=273

解压文件:unzip -d taglist taglist_42.zip    -d 表示要把文件解压到某个目录下。

解压得到两个文件。./taglist/doc/taglist.txt; ./taglist/plugin/taglist.vim

分别复制到各自的目录下:

cp ./taglist/doc/taglist.txt /usr/share/vim/vim61/doc/

cp ./taglist/plugin/taglist.vim /usr/share/vim/vim61/plugin/

配置 ~/.vimrc文件。

filetype plugin on
let Tlist_Ctags_Cmd = '/usr/local/bin/ctags' “设置ctags命令目录
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow =  1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 “让taglist窗口在右侧显示

命令与用法:

在vim中命令模式下使用:
Tlist 打开或者关闭当前文件的索引;
TlistSync 立即在打开的索引窗口中定位当前的光标所在位置属于哪个函数或者结构定义中。

在Taglist窗口按
F1:打开帮助
回车键:跳到光标所在的标记的定义处(如将光标移到main函数,按回车键)
o:新 建一个窗口,跳到标记定义处
p:预览标记定义(仍然在taglist窗口)
空格:显示标记的原型(如函数原型)
u:更新标记列表 (比如源文件新增了一个函数,并在保存后,可在taglist窗口按u)
s:选择排序字段
d:删除光标所在的taglist文件(如用 vi打开了两个文件f1.c,f2.c可以删除f1.c的标记)
x:放大/缩小taglist窗口
+:展开(指标记)
-:折叠
*: 全部展开
=:全部折叠
[[:将光标移到前一个文件的起点
]]:将光标移到后一个文件的起点
q:退出taglist窗口
F1: 关闭帮助 

配置cscope:

首先下载cscope-15.7a.tar.bz2,地址:http://cscope.sourceforge.net/ , 然后安装cscope。

#cp /mnt/hgfs/D/cscope-15.7a.tar.bz2  /usr/local/src/

#tar xjvf cscope-15.7a.tar.bz2

#cd cscope-15.7a

#./configure

#make;make install

这样就基本将cscope安装完成了。接下来我们讨论一下如何使用cscope。

在程序文件的根目录中输入#cscope -Rbkq,这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符号索引,也是对我们来说最重要的文件。注意,如果输入#cscope -R,生成cscope.out 数据库文件并进入cscope界面。在menu处也就是提示按什么方式查询的地方按下‘问号’(?)给出提示。

#: cscope -Rbkq<回车>

  1. R 表示把所有子目录里的文件也建立索引
  2. b 表示cscope不启动自带的用户界面,而仅仅建立符号数据库
  3. q生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
  4. k在生成索引文件时,不搜索/usr/include目录

      在VIM中使用cscope非常简单,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscope find”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:cs find c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find s work”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可 以输入一个正则表达式,这类似于egrep程序的功能。在源代码目录下打开vim。要使用cscope查找就必须加载cscope.out文件.在vim 命令行下执行:

:cs add cscope.out

在vim命令行下执行:

:cs help

cscope commands:

add  : Add a new database             (Usage: add file|dir [pre-path] [flags])

find : Query for a pattern            (Usage: find c|d|e|f|g|i|s|t name)

       c: Find functions calling this function

       d: Find functions called by this function

       e: Find this egrep pattern

       f: Find this file

       g: Find this definition

       i: Find files #including this file

       s: Find this C symbol

       t: Find assignments to

help : Show this message              (Usage: help)

kill : Kill a connection              (Usage: kill #)

reset: Reinit all connections         (Usage: reset)

show : Show connections               (Usage: show)


s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文
当 然在底行模式下介键入 help 会弹出 vim的帮助。
2,使用cscope查找do_fork函数的定义:
在vim命令行下执行:

:cs f g do_fork

就可以查看do_fork的全局定义了。

由于每次启动vim都必须使用"cs add"加载"cscope.out"数据库,是不是感觉很麻烦啊。所以,我们可以将cscope配置到vim中,在http://cscope.sourceforge.net/cscope_vim_tutorial.html 界 面中下载cscope_maps.vim , 然后将cscope_maps.vim 复 制到/usr/share/vim/vim61/plugin/中,注意,下面一段话摘自cscope官网:

"Download the cscope_maps.vim file, and arrange for it to be read by Vim at startup time. If you are using Vim 6.x, stick the file in your $HOME/.vim/plugin directory (or in any other 'plugin' subdirectory in your 'runtimepath'). If you are using Vim 5.x, you can either cut and paste the entire contents of the cscope_maps file into your $HOME/.vimrc file, or stick a "source cscope_maps.vim" line into your .vimrc file. "

也就是说注意你的vim版本,你既可以将cscope_maps.vim 中 的配置内容拷贝到/home/.vimrc中,也可以按照我刚才讲的方法。

cscope_maps.vim 中 的以下内容就是配置cscope快捷键的。

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>

这些快捷键的用法:例如,"ctrl+/+s"就相当于cs find s,也就是查找C语言符号,即查找函数名、宏、枚举值等出现的地方。注意,先按住ctrl,再按/,然后松开ctrl和/,再按s键就可以了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics