vim 配置+ctags+cscope

保存一份在工作常用配置.vimrc

安装了 ctags cscope 两个插件
代码所在路径下,执行以下命令:

ctags -R
find . -name "*.[ch]" > cscope.files
cscope -bkq -i cscope.files


cscope 参数,根据需要添加
  • -R: 在生成索引文件时,搜索子目录树中的代码
  • -b: 只生成索引文件,不进入cscope的界面
  • -q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
  • -k: 在生成索引文件时,不搜索/usr/include目录
  • -i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用”-“,表示由标准输入获得文件列表。
  • -Idir: 在-I选项指出的目录中查找头文件
  • -u: 扫描所有文件,重新生成交叉索引文件
  • -C: 在搜索时忽略大小写
  • -Ppath: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

.vimrc

syn on
set helplang=cn "ʹ°
set backspace=2
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent  "¶¯½
set cindent
set number
set showmatch
set mouse=a
set ruler       "½¾¹λ
set showcmd     "ʾδµ
                      set incsearch "µַַʱ¾Ϳªʼ¾­µIJ¿·
                                                         set nowrap  " һ¾»£¬±ªµ½µڶþȥ
set sidescroll=1        "Ļ·Ų»ʱ£¬°´һ´»¶¯һ¸
set whichwrap=b,s,<,>,[,]       "¿ƶ¯
set cscopequickfix=s-,c-,d-,i-,t-,e-
set hlsearch
set paste
"set list       "±¿ɼ
"set listchars=tab:>.,trail:-
filetype plugin indent on "¶¯ʶ±ļþM£¬¼þ↓ugin½ű¾£¬ʹ½轾

"slet g:netrw_winsize = 20et guioptions+=b " µĹ毿ª

"set backup "¸ļþʱ±¸·

"set path=.,/usr/include,/$HOME/.vim,

"ѡ´
    ¶¯vimʱ²»Ҫ¶¯µþ´

"""""""""""""
" map
"""""""""""""
"imap <C-P> <C-X><C-P>
"imap <C-F> <C-X><C-F>
"imap <C-I> <C-X><C-I>
"imap <C-D> <C-X><C-D>
"imap <C-L> <C-X><C-L>
set completeopt=longest,menu
vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc> "p¹¼аϵ´»¹ѡµ

nmap <F2> :nohlsearch<CR>
map <F3> :copen<CR>:grep -R 
map <F7> :w<CR><CR>:copen<CR>:make<CR><CR>
imap <F7> <Esc>:w<CR><CR>:copen<CR>:make<CR><CR>
map <F8> :cclose<CR>
map <F9> :TlistToggle<CR>

""""""""""""""""""""""""""""""
" netrw setting
"""""""""""""""""""""""""""""""
let g:netrw_winsize = 20
"nmap <silent> <leader>fe :Sexplore!<cr>
map <silent> <F5> : Vexplore<CR>        "¿ªfileexploer£¬S´�ǰ·ָ»¸괰¿ڣ¬V´

"""""""""""""""""""""""
"Tag Lisg(ctags)
"""""""""""""""""""""""
au BufWritePost *c,*cpp,*h !ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
let Tlist_Ctags_Cmd = 'ctags'
"let Tlist_Show_One_File = 1
let Tlist_Auto_Open = 1
let Tlist_Exit_OnlyWindow = 1
let Tlist_Use_Lift_Window = 1
let Tlist_WinWidth = 25
set tags=./tags,/usr/include/tags,$HOME/.vim/gtk_tags/tags_glib_gobject,$HOME/.vim/gtk_tags/tags_gdk_xlib,$HOME/.vim/gtk_tags/tags_gtk,$HOME/.vim/gtk_tags/tags_gdk,$HOME/.vim/gtk_tags/tags_glib_gio,$HOME/.vim/gtk_tags/tags_glib_glib,$HOME/.vim/gtk_tags/tags_gdk_pixbuf,$HOME/.vim/gtk_tags/tags_cairo,$HOME/.vim/gtk_tags/tags_pango,

filetype plugin indent on


" % (º¥
" gd תµ½¾ֲ¿±¿¶¨ 

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if has("cscope")
  set csprg=/usr/bin/cscope
  set csto=1
  set cst
  set nocsverb
  " add any database in current directory
  if filereadable("cscope.out")
      cs add cscope.out
  endif
  set csverb
  set cscopequickfix=c-,d-,e-,g-,i-,s-,t- "在quickfix窗口查看
endif

nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
自动更新cscope数据库

cscope 不会自动更新数据库,所以使用以下脚本自动更新:

#!/bin/bash
cd $1
while true
do
        rm ./cscope.out
        if test -e ./cscope.files
        then
                cscope -bkq -i cscope.files
        else
                cscope -Rbqk
        fi
        cp cscope.out cscope_bak.out
        sleep 300;
done

vim 控制台下复制:
  • 按住shift,然后鼠标选择复制;

猜你喜欢

转载自blog.csdn.net/u012335044/article/details/79974543