现在的位置: 首页 > 综合 > 正文

简单教你配置高性能的vi编辑器(ctags+vim+cscope)

2014年01月24日 ⁄ 综合 ⁄ 共 4150字 ⁄ 字号 评论关闭

 http://blog.csdn.net/yskcg/article/details/5786263

------------------------
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不能自动根据源码的变化启动工作,需要手工启动当源码发生改变后)

抱歉!评论已关闭.