ctags+taglist+cscope

来源:互联网 发布:java path finder 编辑:程序博客网 时间:2024/06/03 15:57
1.ctags

(1)安装ctags : sudo apt-get install ctags

  (2) 安装cscopt: sudo apt-get install cscopt

(2)使用
cscope-indexer -r 对当前目录下的文件递归产生tags文件。

直接敲如:ctags  就进入到相应的模实

比如要查找在kernel 目录中printk的定义:

2.下载taglist

(1)将taglist_45.zip解压得到的两个文件夹:doc和plugin 放到 ~/.vim文件夹里面,如果主目录下没有这个隐藏的文件夹,就建一个。
(2)
plugin/taglist.vim – taglist插件
doc/taglist.txt - taglist帮助文件

(3)常用快捷键
ctrl+ww 在列表和源文件中切换
ctrl + ] 查看函数定义
ctrl + o 返回上一级文件。
gf 查看头文件
gd 转到当前光标所指的局部变量的定义处。
* 转到当前光标所在单词的下一次出现的地方。
# 转到当前光标所在的单词的上一次出现的地方。
<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样 
o 在一个新打开的窗口中显示光标下tag 
<Space> 显示光标下tag的原型定义 
u 更新taglist窗口中的tag 
s 更改排序方式,在按名字排序和按出现顺序排序间切换 
x taglist窗口放大和缩小,方便查看较长的tag 
+ 打开一个折叠,同zoctags常用快捷键ctags常用快捷键 
- 将tag折叠起来,同zc 
* 打开所有的折叠,同zR 
= 将所有tag折叠起来,同zM 
[[ 跳到前一个文件 
]] 跳到后一个文件 
q 关闭taglist窗口

3.修改 .vim/.vimrc 进行修改配置


let $dir="/home/pengpeng/.vim"
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
let Tlist_Show_One_File=0
let Tlist_File_Fold_Auto_Close=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_SingleClick=1
let Tlist_GainFocus_On_ToggleOpen=1
let Tlist_Process_File_Always=1
set cscopequickfix=s-,c-,d-,i-,t-,e-
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
map <silent> <F9> :WMToggle<cr>
let Tlist_Auto_Open = 1
let Tlist_Exit_OnlyWindow = 1
if has("cscope")
        if filereadable("./cscope.out")
                cscope add  ./cscope.out
                set tags=./tags;
                set autochdir
        else
                cscope add  $dir/cscope.out
                set tags=$dir/tags;
                set autochdir
        endif
endif
"map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
  exec "w"
  exec "!gcc -Wall -g % -o %<"
  exec "! ./%<"
endfunc
nmap <C-m>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-m>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-m>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-m>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-m>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-m>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-m>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-m>d :cs find d <C-R>=expand("<cword>")<CR><CR>
"map <C-L> <C-x><C-o>
""""""""""""""""""""""""""""""
   " netrw setting
""""""""""""""""""""""""""""""
   let g:netrw_winsize = 30
   nmap  fe :Sexplore!
 """"""""""""""""""""""""""""""
 " BufExplorer
 """"""""""""""""""""""""""""""
   let g:bufExplorerDefaultHelp=0       " Do not show default help.
   let g:bufExplorerShowRelativePath=1  " Show relative paths.
   let g:bufExplorerSplitRight=0        " Split left.
   let g:bufExplorerSplitVertical=1     " Split vertically.
   let g:bufExplorerSplitVertSize = 30  " Split width
   let g:bufExplorerUseCurrentWindow=1  " Open in new window.
 """"""""""""""""""""""""""""""
   "tab window command
 """"""""""""""""""""""""""""""
nmap <C-n> :tabn<CR>
nmap <C-p> :tabp<CR>
nmap <C-c> :tabc<CR>
nmap <C-o> :tabo<CR>
nmap <C-i> :tabnew ~/source<CR>
""""""""""""""""""""""""""""""
   " winManager setting
""""""""""""""""""""""""""""""
   let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
   let g:winManagerWidth = 30
   let g:defaultExplorer = 0
   nmap  wm :WMToggle<cr>
"map <c-k> :FirstExplorerWindow<cr>
"map <c-l> :BottomExplorerWindow<cr>
map <c-l> <c-w><c-l>
map <c-h> <c-w><c-h>
map <c-j> <c-w><c-j>
map <c-k> <c-w><c-k>
map <wm> :WMToggle<cr>
"nmap <F8> :wa:TlistUpdate
":FirstExplorerWindowb
:set backspace=indent,eol,start
let counter = 0
"inoremap <expr> <C-L> ListItem()
"inoremap <expr> <C-R> ListReset()
inoremap <expr> <C-l> InsertSh()
inoremap <expr> <C-r> InsertInc()
"inoremap <c-o> <c-[>o
func ListItem()
         let g:counter += 1
         return g:counter . '. '
endfunc

func ListReset()
         let g:counter = 0
         return ''
endfunc

func InsertSh()
         return '#!/bin/sh'
endfunc

func InsertInc()
         return '#include<'
endfunc


哈哈 现在就完成了, 可能还有很多的小细节不是很记得了,有时间在慢慢整一下,给自己点记忆就行,下次就比用在到处找资料了  如果不要相应的窗口:TlistClos(命令比较多,可以在命令模式下用Tab来不全)