您的位置:首页 > 运维架构

vi编辑器的配置(cscope+vim+ctags+c.vim)

2010-08-04 10:23 465 查看
------------------------
VIM集成编辑环境配置说明:
------------------------
1、将vim的插件集vimconf.zip解压到linux的登录用户名的主目录下,如果当前登录用户名为admin(以下以admin为例),则解压到/home/admin/,最终形成如下目录结构:
/home/admin/.vim

说明:http://www.vim.org/scripts/下为官方的vim各类插件下载网址
2、将.vimrc文件拷贝到/home/admin目录下

3、安装并配置cscope(FC10默认应已安装)
3.1 确认FC是否安装好cscope
[admin@localhost ~]$ cscope --version
cscope: version 15.6
3.2 对要浏览的代码生成cscope工作时需要的数据库。首先建立如下工作目录,放置linux内核的cscope数据库
mkdir /home/admin/cs4kernel26
3.3 建立生成上述数据库的bash脚本,其中$HOME/linux-2.6.23.1为linux内核源码解压后的目录

#!/bin/bash

LNX=/home/admin/linux-2.6.23.1
cd /
find $LNX /
-path "$LNX/arch/*" ! -path "$LNX/arch/i386*" -prune -o /
-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-i386*" -prune -o /
-path "$LNX/tmp*" -prune -o /
-path "$LNX/Documentation*" -prune -o /
-path "$LNX/scripts*" -prune -o /
-name "*.[chxsS]" -print >/home/admin/cs4kernel26/cscope.files
cscope -b -q -k -i cscope.files

4、安装并配置ctags(FC10默认应已安装)
为了对c/c++代码在vim中进行自动代码补全, 需要安装OmniCppComplete插件, 并配合ctags生成相关标签, 其中OmniCppComplete的安装已经在步骤1中完成, 但是有一个地方必须注意, 即必须使用ctags5.7或更高版本,而不能用低版本, 如ctags5.6, 否则关于union的自动补全就无法完成,请使用ctags --version命令检查目标机器的ctags版本。
4.1 ctags的使用
a)进入源码所在目录,例如[admin@localhost ~]$ cd src2.6 (src2.6是内核源码的softlink目录)

b)执行ctags命令将该目录及其子目录下所有代码符号进行递归处理
[admin@localhost ~]$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ./

c)在b)执行完毕后, 将会在src2.6目录下生成一个tags文件, 以后在此目录下启动vim后, 就可以通过在函数名上执行ctrl+]来跳转到函数定义处 ,并且可以通过ctrl+o跳转回来
注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:set tag=”命令设定“tags”文件的路径,这样vim才能找到“ tags”文件,例如:set tag=/home/admin/src2.6/tags(我们已经统一在.vimrc文件中设置了所有插件的类似相关命令)
--------------------------------------------------
附: 如何生成必要的系统的各种include头文件tags标签
--------------------------------------------------
为了便于在编程中通过OmnicppComplete进行c/c++代码补全, 需要对linux系统本身的/usr/include目录下的相关文件生成tags标签, 因此可以通过如下方式进行生成
i)设置当前目录为/usr/include
ii)在/usr/include目录下执行命令
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ./sys/time.h stdio.h stdlib.h unistd.h string.h ./sys/socket.h ./sys/types.h netdb.h errno.h ./arpa/inet.h signal.h ./netinet/in.h

如果在以后发现某个头文件需要被加入到当前已生成的tags文件中, 则如下执行命令:
[admin@localhost ~]$ ctags -a ./tags --c++-kinds=+p --fields=+iaS --extra=+q ./new_include_file.h
或者
[admin@localhost ~]$ ctags --append=yes --c++-kinds=+p --fields=+iaS --extra=+q ./new_include_file.h

iii)在~/.vimrc文件中按如下方式增加所有相关tags文件:(有多少个, 就如法设置多少个)
set tags+=/home/admin/src2.6/tags
set tags+=/usr/include/tags
---------------------------------------------------------------------------------------
5、vim的插件集vimconf.zip中常用插件快捷方式

5.1 taglist
按F2可以获得当前源文件的各个对象结构列表
5.2 NERD_tree
按F3可以树形方式列表磁盘目录结构
5.3 NERD_Comment
",ck" <==本命令允许在insert模式下直接编写 /* 这是注释 */
",cs" <==本命令可以在代码中增加如下形式的注释
/*
*
*/
",ci" <==本命令可以在代码状态和注释状态之间进行切换
",ca" <==本命令可以在命令状态下进行c和c++注释风格的切换
5.4 crefvim
当光标移到c语言的关键字, 函数时, 按/cr可获得相关信息
5.5 vcscommand for svn,下面命令直接在vim的insert状态下输入即可
nmap /add <Plug>VCSAdd
nmap /tj <Plug>VCSCommit
nmap /diff <Plug>VCSDiff
nmap /gtorig <Plug>VCSGotoOriginal
nmap /info <Plug>VCSInfo
nmap /log <Plug>VCSLog
nmap /lock <Plug>VCSLock
nmap /review <Plug>VCSReview
nmap /status <Plug>VCSStatus
nmap /up <Plug>VCSUpdate
nmap /ulock <Plug>VCSUnlock
nmap /diffv <Plug>VCSVimDiff

5.6 errormarker,用于vim中直接进行make文件时直接显示源文件的各个编译错误
:cw 打开quickfix窗口显示所有错误
:cl 列出错误
:cn 让光标指向下一个错误
:cp 让光标指向上一个错误
:cnew 从头开始
:cclose 关闭quickfix窗口

5.7 showmark,对源码增加书签命令:
,m[a,b,c,...], 其中小写字母代表只在本缓冲中起作用的标签
/m[A,B,C,...], 或者,m[A,B,C,...], 其中大写字母代表能在多个缓冲文件中可视的书签,要跳转到某个标签,例如前面的A标签,则"'A"即可
/mt ,Toggles ShowMarks on and off.
/mh , Hides an individual mark.
/ma , Hides all marks in the current buffer.
/mm , Places the next available mark.

5.8 cscope
按F5键,显示所有调用该光标下函数的其他源码位置
按F6键,显示所有该光标下函数调用的其他函数名及位置

5.9 ctags
按F12,重新生成当前目录(或自己指定的其他目录,具体配置在.vimrc文件中)下源码的tags标记,以同步代码补全功能(因ctags不能自动根据源码的变化启动工作,需要手工启动当源码发生改变后)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: