(1)安装ctags : sudo apt-get install ctags
(2) 安装cscopt: sudo apt-get install cscopt
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来不全)