windows下vim+ctags+cscope配置


作者:lingyun 来源:凌云物网智科实验室 时间:2014-09-25

” +——————————————————————————————–+
” | Description: Windows下vim配置配置文件_vimrc,该配置支持: ctags,cscope,taglist…
” | Author: 郭文学<QQ: 281143292> 武汉凌云嵌入式实验室( www.iot-yun.com )
” | Version: 1.0.0<2014-09-25> 发布初始化版本
” +——————————————————————————————–+

” +———————————————————————————————
” | 常用快捷键:
” | 1, F4 打开Tlist,列出当前C文件夹下的变量,函数,宏
” | 2, CTRL+Y 创建ctags和csope文件
” | 3,CTRL+] 函数,变量,宏跳转
” | 4, CTRL+T ctags跳转返回
” | 5, CTRL+\后按s 搜索光标所在函数,变量,宏所有出现的地方
” | 6, wm 打开winmanager
” +———————————————————————————————

” +———————————————————————————————————————-+
” | 软件插件下载地址: 安装到 D:\Program Files (x86)\Vim\vim73\下
” | cscope: https://cscope-win32.googlecode.com/files/cscope-15.8a-win32rev1-static.zip
” | ctags: http://softlayer-dal.dl.sourceforge.net/project/ctags/ctags/5.8/ctags58.zip
” | find/sort http://softlayer-dal.dl.sourceforge.net/project/gnuwin32/findutils/4.2.20-2/findutils-4.2.20-2-bin.zip
” | grep http://www.interlog.com/~tcharron/grep.html
” |
” | 常用插件: 安装到 D:\Program Files (x86)\Vim\vim73\plugin\下
” | taglist: http://www.vim.org/scripts/download_script.php?src_id=7701
” | winmanager: http://www.vim.org/scripts/download_script.php?src_id=754
” | minibufexpl: http://www.vim.org/scripts/download_script.php?src_id=3640
” | a.vim: http://www.vim.org/scripts/download_script.php?src_id=7218
” | grep.vim: http://www.vim.org/scripts/download_script.php?src_id=7645
” +———————————————————————————————————————-+

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

set nu! “显示行号
colorscheme desert “设置背景颜色
syntax enable “语法使能
syntax on “语法使能
set tabstop=4 “缩进的空格数
set expandtab “是否在缩进和遇到Tab键时使用空格代替; noexpandtab取消设置
set autoindent “自动缩进
set smartindent “智能对齐
set showmatch “显示括号配对情况
set shiftwidth=4 “换行时,交错使用4个空格

set guioptions-=T ” windows下隐藏工具栏
set guioptions-=r ” 把gui右边的滑动条去掉
set guioptions-=L ” 把gui左边的滑动条去掉
set guioptions-=m ” 把gui的菜单栏去掉
set shortmess=atI ” 启动的时候不显示援助索马里儿童的提示(是I而不是L)
set nobackup ” 关闭自动备份功能,backup自动备份

” +———————————————+
” | Ctags, Cscope, Tlist, Winmanager配置 |
” +———————————————+

” 让ctags自动在当前目录及其父目录下找tags文件
set tags=tags; “设置ctags索引文件名为tags
set autochdir “如果找不到ctags文件就自动切换目录查找
” CTRL+Y组合键生成cscope和tags文件
map <C-Y> :! cscope -Rb && ctags –c-kinds=+defglmnstuvx –c++-kinds=+p –languages=c,c++ –langmap=c:.c.h –fields=+iaS –extra=+q -R .

nnoremap <silent> <F12> :A<CR> “快捷键F12C文件和头文件之间切换 由a.vim插件提供
nnoremap <silent> <F3> :Grep<CR> “快捷键F3在工程中快速查找 由grep.vim插件提供
map <F4> :Tlist<CR> “快捷键F4打开/关闭Tlist 由Tlist插件提供
nmap wm :WMToggle<cr> “正常模式输入wm将打开winmanager 由winmanager插件提供
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let g:winManagerWindowLayout=’FileExplorer|TagList’ “将winmanager设置成浏览器和TagList的组合

“多文件编辑
“ctrl+Tab,切换到前一个buffer,并在当前窗口打开文件;
“ctrl+shift+Tab,切换到后一个buffer,并在当前窗口打开文件;
“ctrl+箭头键,可以切换到上下左右窗口中;
“ctrl+h,j,k,l,切换到上下左右的窗口中

let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplMapWindowsNavVim=1
let g:miniBufExplMapWindowNavArrows=1
” cscope 设置
if has(“cscope”)
set csprg=cscope.exe
set csto=1
set cst
set nocsverb
” add any database in current directory
if filereadable(“cscope.out”)
cs add cscope.out
endif
set csverb
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>

set diffexpr=MyDiff()
function MyDiff()
let opt = ‘-a –binary ‘
if &diffopt =~ ‘icase’ | let opt = opt . ‘-i ‘ | endif
if &diffopt =~ ‘iwhite’ | let opt = opt . ‘-b ‘ | endif
let arg1 = v:fname_in
if arg1 =~ ‘ ‘ | let arg1 = ‘”‘ . arg1 . ‘”‘ | endif
let arg2 = v:fname_new
if arg2 =~ ‘ ‘ | let arg2 = ‘”‘ . arg2 . ‘”‘ | endif
let arg3 = v:fname_out
if arg3 =~ ‘ ‘ | let arg3 = ‘”‘ . arg3 . ‘”‘ | endif
let eq = ”
if $VIMRUNTIME =~ ‘ ‘
if &sh =~ ‘\<cmd’
let cmd = ‘””‘ . $VIMRUNTIME . ‘\diff”‘
let eq = ‘”‘
else
let cmd = substitute($VIMRUNTIME, ‘ ‘, ‘” ‘, ”) . ‘\diff”‘
endif
else
let cmd = $VIMRUNTIME . ‘\diff’
endif
silent execute ‘!’ . cmd . ‘ ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3 . eq
endfunction

在线咨询
微信号
13554373241
联系方式
135-5437-3241
邮箱
guowenxue@aliyun.com
返回顶部