Ubuntu下代码查看小妙招--vim ctags cscope的简单用法


是不是刚安装上Ubuntu发现vim没有语法高亮显示、而别人的是头文件、变量……都有特定的颜色表示而郁闷。是不是常常为编译器提示某某某头文件找不到和忘记了某个函数的原型而去翻砖头那么厚的书而烦恼,呵呵,这些都是小问题。这里介绍一些小方法解决这些问题。

首先解决不能显示语法高亮的问题:

可能你也知道去掉/etc/vim/vimrc文件中的“"syntax on “前面的双引号就能开启语法高亮,可是开了这个选项后,打开vim会有一些莫名的提示,这些都不要经我们升级一下vim就OK了升级方法可以是:

1、在终端下输入 sudo apt-get install vim

2、下载下列软件包安装即可:

vim、vim-common、vim-runtime、vim-tiny

我现在用的版本7.1的

升级后在看看,发现vim不一样了吧。是不是感觉眼前一亮!vim的使用很简单,但是要用好了很不简单,这个需要自己慢慢的摸索。

下面我们介绍集中查看头文件,库函数的方法:

1、最简单的方法是安装对应库的man手册,直接在终端man xxx(函数)如 man printf 就会看到pringf相关的信息,这种方法简单而且显示的信息很多,前提是你的英文必须过关!这种方法不是这里的重点。

安装一个最基本的文档sudo apt-get install manpages-dev

2、这种方法可以让你更了解头文件或内核源码的结构

(1)首先安装一个工具Ctags:sudo apt-get install Ctags

让后我们进入/usr/include或你的内核目录进行如下操作:ctags -R *,这会在当前目录下递归的为各个子目录生成一个名为tags标签文件,这个操作在第一次执行后即可。

现在在我们执行vim -t printf我们会看到我们进入了vim的编辑界面同时也到了printf声明的地方。或直接进入vim编辑界面输入:tag <函数名或宏等> 按TAB键可以进行模式匹配,继续安TAB匹配下一个。

可是这样查到的东西可能不是你想要的那一个,怎么解决这个问题呢?

(2)解决上面问题需要安装一个工具cscope:sudo apt-get install cscope

上面几个工具单独用功能不是很大,可是结合起来功能就非常强大了。我这里有一个自己用的vim脚本,是拷的别人的功能不是很多但是已经够用了。

在用户目录下新建一个.vimrc文件将下面内容添加到文件中:

set mouse=a
        let Tlist_Use_Right_Window=1
        let Tlist_File_Fold_Auto_Close=1
        map <F4> :TlistToggle<CR>
        noremap <F6> :make<CR>
        noremap <S-F6> :make clean;make<CR>
        noremap <F7> :Tlist<CR>
        noremap <S-F7> :TlistSync<CR>
        noremap <F3> :!./vitags.sh<CR>:cs reset<CR>
        noremap <S-F3> :!cvs up<CR>
        nnoremap <space> @=((foldclosed(line('.')) < 0)       'zc' : 'zo')<CR>

if has("multi_byte")
        set encoding=utf-8
        set fileencoding=chinese
        set fileencodings=ucs-bom,utf-8,chinese
        endif
        set wrap
        set hlsearch
        filetype plugin on

colorscheme elflord
        syntax on

set nocp
        filetype plugin on
        filetype indent on

if has("cscope")
        set csprg=/usr/bin/cscope
        set csto=0
        set cst
        set nocsverb
        " add any database in current directory
        if filereadable("cscope.out")
        cs add cscope.out
        " else add database pointed to by environment
        elseif $CSCOPE_DB != ""
        cs add $CSCOPE_DB
        endif
        set csverb
        set cscopetag
        endif

set nu
        set ts=4
        set sw=4

set ru
        set hls
        set is
        set sm
        set cin
        set cino=:0g0t0(sus

set autoread                              " read open files again when changed outside Vim
        set incsearch                              " use incremental search
        set nowrap                               " do not wrap lines
        set nobackup
        set nowritebackup
        map <C-F12> :!ctags -R --c-kinds=+p --fields=+iaS --extra=+q .<CR>
        map <C-F11> :!ctags -R .<CR>

现在再试试vim -t <函数名或宏等>,这时如果有多个选项的话就会出现一个列表让你选择你需要的那个。

一个好用的工具可以让你的工作效率大大提高,这里只是介绍了一点点,希望大家补充,纠正错误。

相关内容