从此使用vim代替si看代码

来源:互联网 发布:减员增效人员优化散文 编辑:程序博客网 时间:2024/05/21 17:50
以前是在windows下的开发环境,最好用的看代码写代码工具当然是非source insight莫属了,所以一直以来都是用si写代码,分析代码。
后面转入linux开发环境后一直也是用si(通过wine安装)但是很不稳定,经常会出各种问题死掉。所以决定切换用vim来代替si,vim号称程序员最好用的代码编辑器,再说了,作为一个混迹多年江湖的程序猿,不去好好感受下这么优秀工具,岂不是暴殄天物?

网上找了很多资料,终于搭建了自己的 vim “IDE”, 用了一段时间了,感觉还不错 ~

整合的主要功能有:

1、各自目录树、符号列表、搜索窗口切换定义;

2、ctags + cscope支持,而且 各个打开的vim工程独立不干扰,存放到~/.ctags/ 目录下;

3、保存当前vim配置,下次打开vim还是原来的配置,方便使用,而且最关键的是各个vim工程独立,同样保存在~/.ctags/目录下;

4、模糊、全局搜索使用外部ag搜索引擎,速度很快;

5、各种常用必备插件已配置;

6、其它详细部分见vimrc配置吧;


下面贴出来分享下。


整合好的地址:

git clone https://github.com/guomingyi/vim-warper.git


相关快捷键配置:

# Install########################################cp -a .vim ~/.vimcp -a .vimrc ~/.vimrc# Ctags:cd ~/.vim/depends/unzip ctags-5.8.zipcd ctags-5.8./configuremakesudo make install# Cscope:参考Ctags步骤.##################[快捷键定义]################## 窗口类:f2    鼠标使能切换\f2   行号显示切换f3    tagbarlist\f3   NERDTreef4    Ctrlp,文件模糊搜索,也可按ctrl+p打开,按esc退出\f4   MRU,文件打开历史记录,可保存f5    make tags,用于查看代码进入函数跳转,支持多目录加载\f5   make cscope,ctags的升级,功能更强大,暂不支持多目录加载f6    Buf exploler,当前文件打开记录缓存\f6   miniBufExploler,跟上一个类同\f7   themes switch# 文件跳转:1     跳转到上一个文件2     跳转到下一个文件\1    关闭当前文件3     quickfix列表搜索文件条状到下一个4     quickfix跳转到上一个# 更新插件:\3    更新插件# 退出:\q    退出当前窗口\qa   不保存seesion.vim退出全部\qs   保存session.vim退出全部F2    同\qs\w    :w# ACK搜索相关:\s    Ack 搜索,先按下\s,再输入需要搜索的字符,回车\f    AckFile搜索,同上# ag 搜索sudo apt-get install silversearcher-ag# Cscope相关:cc  搜索该函数调用的函数cd  搜索调用该函数的函数cs  搜索函数cf  搜索文件ct  搜索字符串# 特殊命令:# 有时候vim的历史记录会有混乱,这个时候有两种方式还原:1> rm -rf ~./ctags/2> vim clean


打开后默认界面:



按 F3 切换显示tagbar ,\F3 切换显示nerdtree, F4 弹出ctrlp模糊搜索



按\F4 切换ctrlp-funky,模糊搜索当前文件函数,ctrlp搜索使用外部ag搜索引擎





buffer 浏览器,按F6切换



F5 执行make tags,tags的目录做了重定向,每个新打开的vim工程互不干扰。



make cscope,和ctags类同



ag搜索符号




vimrc 全配置:

  1   2 "##################################################################[Plugin manager]  3 " http://www.cnblogs.com/songfy/p/5635757.html   4 set rtp+=~/.vim/bundle/Vundle.vim  5   6 call vundle#begin()  7   8 Plugin 'VundleVim/Vundle.vim'  9 Plugin 'tpope/vim-fugitive' 10 Plugin 'vim-scripts/winmanager' 11 Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} 12 Plugin 'kien/ctrlp.vim' 13 Plugin 'wincent/command-t' 14 Plugin 'scrooloose/nerdtree' 15 Plugin 'majutsushi/tagbar' 16 Plugin 'jiangmiao/auto-pairs' 17 Plugin 'minibufexpl.vim' 18 Plugin 'jlanzarotta/bufexplorer' 19 Plugin 'taglist.vim' 20 Plugin 'scrooloose/nerdcommenter' 21 Plugin 'godlygeek/tabular' 22 Plugin 'plasticboy/vim-markdown' 23 Plugin 'portante/cscope' 24 Plugin 'tomasr/molokai' 25 Plugin 'yegappan/mru' 26 Plugin 'rking/ag.vim' 27 Plugin 'altercation/vim-colors-solarized' 28 Plugin 'tacahiroy/ctrlp-funky' 29 Plugin 'Lokaltog/vim-distinguished' 30  31 "Plugin 'Valloric/YouCompleteMe' "NEED VIM8.0+ & PYTHON3.5+ support. 32 "Plugin 'vim/vim' "vim8.0+ 33  34 call vundle#end() 35  36 filetype plugin indent on 37 "##################################################################[default value set] 38 set modelines=0 39 set backspace=2 "设置更好的删除 40 syntax on "语法高亮 41 "set noswapfile 42 "autocmd InsertLeave * se nocul "用浅色高亮当前行 43 "autocmd InsertEnter * se cul 44 set cul 45 set paste 46 set smartindent "智能对齐 47 set autoindent "自动对齐 48 set confirm "在处理未保存或只读文件的时候,弹出确认框 49 set tabstop=4 "tab键的宽度 50 set softtabstop=4 51 set shiftwidth=4 "统一缩进为4 52 set expandtab "不要用空格替代制表符 53  54 set history=50  "历史纪录数 55 "set nohlsearch 56 set hlsearch 57 set incsearch "搜素高亮,搜索逐渐高亮 58  59 set gdefault "行内替换 60 set encoding=utf-8 61 set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1 "编码设置 62  63 set guifont=Menlo:h16:cANSI "设置字体 64 set langmenu=zn_CN.UTF-8 65 set helplang=cn  "语言设置 66  67 set ruler "在编辑过程中,在右下角显示光标位置的状态行 68 set laststatus=1  "总是显示状态行 69 set showcmd "在状态行显示目前所执行的命令,未完成的指令片段也会显示出来 70 set scrolloff=3 "光标移动到buffer的顶部和底部时保持3行的距离 71 "set showmatch "高亮显示对应的括号 72 set matchtime=5 "对应括号高亮时间(单位是十分之一秒) 73 set autowrite "在切换buffer时自动保存当前文件 74 set wildmenu  "增强模式中的命令行自动完成操作 75 set linespace=2 "字符间插入的像素行数目 76 set whichwrap=b,s,<,>,[,] "开启normal 或visual模式下的backspace键空格键, 77                           "左右方向键,insert或replace模式下的左方向键,右方向键的跳行功能 78  79 filetype plugin indent on "分为三部分命令:file on,file plugin on,file indent on  80                           "分别是自动识别文件类型, 用用文件类型脚本,使用缩进定义文件 81  82 set foldenable  "允许折叠 83 set cursorline "突出显示当前行 84 set magic  "设置魔术?神马东东 85 set ignorecase "搜索忽略大小写 86 "filetype on "打开文件类型检测功能 87  88 set foldmethod=syntax "使用语法高亮定义代码折叠: zc 折叠, zo 展开 89 set foldlevelstart=99 "打开文件是默认不折叠代码 90  91 "set mouse= "鼠标默认值 92 "set number "显示行号 93  94 " 自动切换vim工作目录 95 " set autochdir 96 " :cd   改变vim的当前工作路径 97 " :lcd  改变当前窗口的工作路径 98 " :pwd  查看当前的工作路径 99 100 behave mswin101 102 if has("autocmd")103     au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif104     au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"105     au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"106     au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"107 endif108 "##################################################################[auto exec cmds]109 "autocmd VimEnter * TagbarToggle "auto start cmd110 "autocmd VimEnter * WMToggle "auto start cmd111 "autocmd VimEnter * NERDTree "auto start cmd112 113 "default themes114 autocmd VimEnter * call UserFunctionSwitch(6)115 116  " default show line number117 autocmd VimEnter * call UserFunctionSwitch(0)118 119 " default enable mouse120 autocmd VimEnter * call UserFunctionSwitch(1)121 122 "Open Nerdtree when start vim with no argument123 if argc() == 0 && !exists("s:std_in")124 "    autocmd VimEnter * WMToggle125 endif126 127 128 autocmd BufNewFile * call UserFunctionSwitch(52)129 130 "##################################################################[ctags]131 " Press F5 to update make ctags.132 " cd ~/.ctags133 " ctags -R ${source_path}134 "silent !~/.vim/shell/make-ctags.sh135 let g:pwd = getcwd()136 let g:Newpwd = getcwd()137 "let g:Newpwd = substitute(g:pwd, $HOME, "", "")138 let g:Newpwd = "~/.ctags/" . substitute(g:Newpwd, "/", "_", "g")139 140 let settag = "set tags=" . g:Newpwd . "/tags"141 "echo settag142 exec settag143 144 let g:argc = argc()145 let g:argv = argv(0)146 "echo "argv:" g:argv "argc:" g:argc  147 148 if (expand(g:argv) == expand("clean"))149     let g:clean = 1150     echo "clean all session.vim.."151     silent :!~/.vim/shell/del.sh152 endif153 154 "##################################################################[key map]155 nmap 1 : bp <cr>156 nmap 2 : bn <cr>157 nmap <Leader>1 : bd <cr>158 nmap <Leader>3 : PluginInstall <cr>159 160 nmap 3 : cn <cr>161 nmap 4 : cp <cr>162 163 nmap 5 <C-]>164 165 nmap 6 <C-o>166 167 nmap 7 <C-i>168 169 "行号切换170 map <silent> <F2> : call UserFunctionSwitch(0) <CR>171 "鼠标切换172 nmap <silent> <Leader><F2> : call UserFunctionSwitch(1) <CR>173 174 "neadtree175 nmap <silent> <Leader><F3> : call UserFunctionSwitch(2) <CR>176 "tagbarlist177 nmap <silent> <F3> : call UserFunctionSwitch(3) <CR>178 179 "mru, file open history record180 " nmap <silent> <Leader><F4> : call UserFunctionSwitch(4) <CR>181 "file search182 nmap <silent> <F4> : exec "CtrlP ." <CR>183 nmap <silent> <Leader><F4> : exec "CtrlPFunky" <CR>184 nmap fu : execute 'CtrlPFunky ' . expand('')185 186 "make source tags187 nmap <silent> <F5> : call UserFunctionSwitch(5) <CR>188 nmap <silent> <Leader><F5> : call UserFunctionSwitch(51) <CR>189 190 "miniBuf191 nmap <silent> <Leader><F6> : call UserFunctionSwitch(70) <CR>192 "buf exploler193 nmap <silent> <F6> : call UserFunctionSwitch(7) <CR>194 195 "quickfix 196 nmap <silent> <F7> : call UserFunctionSwitch(8) <CR>197 "nmap <silent> 8 : call UserFunctionSwitch(80) <CR>198 "nmap <silent> 9 : call UserFunctionSwitch(81) <CR>199 "themes switch200 nmap <silent> <Leader><F7> : call UserFunctionSwitch(6) <CR>201 202 nmap <silent> <F8> : call UserFunctionSwitch(50) <CR>203 204 "ack search file & symbols205 nmap <Leader>s : Ack <Space>206 nmap <Leader>f : AckFile <Space>207 nmap <Leader>q : q <CR>208 nmap <Leader>qa : qall <CR>209 nmap :ag : Ag -i <Space>210 nmap :af : AgFile <Space>211 212 " quit all & save session.vim.213 nmap <F12> : call UserFunctionSwitch(30) <CR>214 nmap <Leader>qs : call UserFunctionSwitch(30) <cr>215 nmap <Leader>wq : wq <CR>216 nmap <Leader>w : w <CR>217 nmap <Leader>rn : %s/\r//g <CR> "替换^M218 nmap <Leader>rs : call LeaveHandler() <Space>219 220 " cscope221 nmap cc : cscope find c <Space>222 nmap cd : cscope find d <Space>223 nmap cf : cscope find f <Space>224 nmap cg : cscope find g <Space>225 nmap cs : cscope find s <Space>226 nmap ct : cscope find t <Space>227 "##################################################################[function]228 let g:userFuncSwitch = 1229 let g:line_number_show = 0230 let g:mouse_enable = 0231 let g:window_flag = 1232 let g:MRU_flag = 0233 let g:themes_flag = 1234 let g:ctags = ""235 236 let g:quickfix = 0237 238 function! UserFunctionSwitch(cmd)239 let g:userFuncSwitch = a:cmd240 exec ":syntax on"241 242 if a:cmd == 0243     if g:line_number_show == 0244         exec 'set nu'245         let g:line_number_show = 1246         echo 'Show line number!'247     else248         exec 'set nonu'249         let g:line_number_show = 0250     endif251     return252 endif253 254 if a:cmd == 1255     if g:mouse_enable == 0256         let g:mouse_enable = 1257         exec 'set mouse=n'258         echo 'enable mouse'259     else260         let g:mouse_enable = 0261        exec 'set mouse='262         echo 'disable mouse'263     endif264     return265 endif266 267 if a:cmd == 2268     exec 'WMToggle'269     return270 endif271 272 if a:cmd == 3273     exec 'TagbarToggle'274     return275 endif276 277 if a:cmd == 4278     if g:MRU_flag == 0279         let g:MRU_flag = 1280         exec 'MRU'281     else282         let g:MRU_flag = 0283         exec 'MRU'284         exec 'q'285     endif286     return287 endif288 289 if a:cmd == 5290     echo "Start make tag.."291     let g:time1 = localtime()292     let g:ctags = system("~/.vim/shell/make-ctags.sh " . shellescape(expand('%:h')))293     let g:ctag_execcmd = "set tags+=" . g:ctags294     exec g:ctag_execcmd295     let g:time2 = localtime()296     echo g:ctag_execcmd "escape time:" (g:time2 - g:time1)"s"297     return298 endif299 300 " 一键更新ctags & cscope..301 if a:cmd == 50302     " exec g:ctag_execcmd303     " cs kill -1304     " exec g:cscope_cmd305     return306 endif307 308 if a:cmd == 51309     echo "Start make cscope.."310     let t1 = localtime()311     let db = system("~/.vim/shell/cscope.sh " . shellescape(expand('%:p')))312     let path = strpart(db, 0, match(db, "cscope.out")) " 必须这样截取,否则多余的结束符^@会导致cs add 异常. 313     let g:cscope_cmd = "cs add " . path . "cscope.out"314     echo g:cscope_cmd315     cs kill -1316     exec g:cscope_cmd317     let t2 = localtime()318     echo "escape time:" (t2 - t1)"s"319     return320 endif321 322 " 监听执行命令323 if a:cmd == 52324     " let cwd = getcwd()325     " echo "cwd:" cwd326     return327 endif328 329 330 if a:cmd == 6331 332     if g:themes_flag == 0333         let g:themes_flag = 1334         exec "colorscheme solarized"335         let g:molokai_original = 0336         let g:rehash256 = 0337         exec "set background=dark"338         exec "set t_Co=32"339         return340     endif341     if g:themes_flag == 1342         let g:themes_flag = 2343         exec "colorscheme molokai"344         let g:molokai_original = 1345         let g:rehash256 = 1346         exec "set background=dark"347         exec "set t_Co=256"348         return349     endif350 351     if g:themes_flag == 2352         let g:themes_flag = 3353         let g:molokai_original = 0354         let g:rehash256 = 0355         exec "colorscheme default"356         exec "set background=light"357         exec "set t_Co=128"358         return359     endif360 361     if g:themes_flag == 3362         let g:themes_flag = 1363 364         exec "set background=dark"365         exec "set t_Co=256"366         return367     endif368     return369 endif370 371 372 if a:cmd == 70373     exec 'TMiniBufExplorer'374     return375 endi376 377 if a:cmd == 7378     exec 'ToggleBufExplorer'379     return380 endif381 382 if a:cmd == 8383     if g:quickfix == 0384         let g:quickfix = 1385         exec "cclose"386     else387         let g:quickfix = 0388         exec "copen"389     endif390     return391 endif392 393 if a:cmd == 80394     if g:quickfix == 1395         exec "bn"396     else397         exec "cn"398     endif399     return400 endif401 402 if a:cmd == 81403     if g:quickfix == 1404         exec "bp"405     else406         exec "cp"407     endif408     return409 endif410 411 if a:cmd == 20412     "call MyTabLine()413     "echo 'tab:' tab414     return415 endif416 417 if a:cmd == 30418     let g:quit_save = 1419     exec "qall"420     return421 endif422 423 endfunction424 425 "##################################################################[TlistToggle,NERDTree]426 let NERDTreeQuitOnOpen=1 "打开文件时关闭树427 let NERDTreeShowBookmarks=1 "显示书签428 let Tlist_Show_One_File = 1 " 不同时显示多个文件的 tag ,只显示当前文件的429 let Tlist_Exit_OnlyWindow = 1 " 如果 taglist 窗口是最后一个窗口,则退出 vim430 let Tlist_Use_Right_Window = 1431 let Tlist_Auto_Open = 0432 "###################################################################[cscope]433 " http://blog.csdn.net/citongke1/article/details/8497244434 435 " 安装:436 " sudo apt-get install cscope437 438 " 创建索引:439 " cscope -Rbq440 " 把需要创建索引的文件类型输入到这个文件441 " find . -type f > cscope.files442 443 " 添加到vim:444 " :cs add ./cscope.out445 446 " 查找函数func:447 " :cs find s func448 449 " vim支持8种cscope的查询功能,如下:450 " s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方(包括头文件)451 " g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能(比如有可能只在头文件处)452 " d: 查找本函数调用的函数453 " c: 查找调用本函数的函数454 " t: 查找指定的字符串455 " e: 查找egrep模式,相当于egrep功能,但查找速度快多了456 " f: 查找并打开文件,类似vim的find功能457 " i: 查找包含本文件的文件458 " 其他功能可输入:help cscope查看459 460 if has("cscope")461     " set csprg=/usr/bin/cscope462     set csprg=cscope463     set csto=1464     set cst465     set nocsverb466     " add any database in current directory467     " if filereadable("cscope.out")468         " cs add cscope.out469         " else add database pointed to by environment470     " elseif $CSCOPE_DB != ""471         " cs add $CSCOPE_DB472     " endif473     set csverb474 endif475 476 "##################################################################[Ctrlp]477 set rtp+=~/.vim/bundle/ctrlp.vim478 :helptags ~/.vim/bundle/ctrlp.vim/doc479 let g:ctrlp_map = '<c-p>'480 let g:ctrlp_cmd = 'CtrlP'481 let g:ctrlp_working_path_mode = 'cra'482 483 let g:ctrlp_custom_ignore = {484     \ 'dir':  '\v[\/]\.(git|hg|svn|rvm|out|gen)$',485     \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc|a|img|apk|bak|ko|deb|~|swp|tmp|html|jpg|png|bmp|ogg|log|jar|o)$',486     \ }487 488 set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.exe,*.tar,*.deb,*~,*.bak,*.ko,*.bin,*.img,*.apk,*.jar489 490 let g:ctrlp_regexp = 1491 492 let g:ctrlp_cache_dir = '~/.cache/ctrlp'493 let g:ctrlp_show_hidden = 0494 495 " sudo apt-get install silversearcher-ag496 " when use ag ,add custom ignore to : ~/.agignore497 if executable('ag')498     let g:ctrlp_use_caching = 1499     set grepprg=ag\ --nogroup\ --nocolor500     let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'501 else502     let g:ctrlp_use_caching = 1503     let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f']504     let g:ctrlp_prompt_mappings = {505     'AcceptSelection("e")': ['<space>', '<cr>', '<2-LeftMouse>'],506     }507 endif508 509 " echo "g:ctrlp_user_command :" g:ctrlp_user_command510 511 let g:ctrlp_clear_cache_on_exit = 0512 let g:ctrlp_max_depth = 100513 let g:ctrlp_max_files = 5000000514 515 " ctrlp-funky516 let g:ctrlp_funky_syntax_highlight = 1517 "##################################################################[winManager]518 let g:NERDTree_title="[NERDTree]"519 let g:winManagerWindowLayout='NERDTree'520 521 function! NERDTree_Start()522     exec 'NERDTree'523 endfunction524 525 function! NERDTree_IsValid()526     return 1527 endfunction528 529 " NOTIC!!! modefiy WinManager.vim to fixed open empty file bug:530 "function! <SID>ToggleWindowsManager()  531 "   if IsWinManagerVisible()  532 "      call s:CloseWindowsManager()  533 "   else  534 "      call s:StartWindowsManager()  535 "      exe 'q'  " ADD THIS LINE!536 "   end  537 "endfunction  538 539 "##################################################################[MiniBufExplorer]540 let g:default_open_minibufexplorer = 0541 let g:miniBufExplMapWindowNavVim = 1542 let g:miniBufExplMapWindowNavArrows = 1543 let g:miniBufExplMapCTabSwitchBufs = 1544 let g:miniBufExplModSelTarget = 1545 let g:miniBufExplMoreThanOne=0546 547 "BufExplorer548 set rtp+=~/.vim/bundle/bufexplorer549 550 let g:bufExplorerShowRelativePath=0  " Show absolute paths.551 let g:bufExplorerSortBy='extension'552 let g:bufExplorerSortBy='fullpath'553 let g:bufExplorerSortBy='mru'554 let g:bufExplorerSortBy='name'555 let g:bufExplorerSortBy='number'556 557 "nmap <silent> <s-F7> :BufExplorer<CR> 558 "nmap <silent> <m-F7> :BufExplorerHorizontalSplit<CR>559 "nmap <silent> <c-F7> :BufExplorerVerticalSplit<CR>560 "##################################################################[SuperTab]561 let g:SuperTabDefaultCompletionType="context"562 563 "##################################################################[TagbarToggle]564 let g:tagbar_ctags_bin = 'ctags'565 let g:tagbar_width = 30566 567 "##################################################################[mru]568 set rtp+=~/.vim/bundle/mru569 let g:MRU_Max_Entries = 1000570 let g:MRU_Exclude_Files = '^/tmp/.*\|^/var/tmp/.*'  " For Unix571 let g:MRU_Include_Files = '\.c$\|\.h$'572 let g:MRU_Window_Height = 8573 "let g:MRU_Use_Current_Window = 1574 let g:MRU_Auto_Close = 0575 let g:MRU_Max_Menu_Entries = 20576 577 "##################################################################[auto-pairs]578 set runtimepath^=~/.vim/bundle/auto-pairs579 let g:AutoPairsFlyMode = 1580 let g:AutoPairsShortcutBackInsert = '<M-b>'581 set laststatus=2582 "##################################################################[nerdcommenter] "\cc 注释当前行和选中行  583 "\cu 取消注释 584 set rtp+=~/.vim/bundle/nerdcommenter585 let g:NERDSpaceDelims = 1586 let g:NERDAltDelims_java = 1587 let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } }588 let g:NERDCommentEmptyLines = 1589 let g:NERDTrimTrailingWhitespace = 1590 let g:NERDCompactSexyComs = 1591 592 "##################################################################[ack]593 set rtp+=~/.vim/bundle/ack.vim594 let g:ackprg = '~/.vim/shell/xgrep' "find symbols and files.595 let g:ack_autoclose = 1596 let g:ackpreview = 1597 let g:ackhighlight = 1598 let g:ack_autofold_results = 0599 let g:ack_lhandler = "botright lopen 8"600 let g:ack_qhandler = "botright copen 8"601 602 "##################################################################[resume history]603 let g:AutoSessionFile = g:Newpwd . "/session.vim"604 if(expand(g:AutoSessionFile) == findfile(expand(g:AutoSessionFile)))605     silent :!~/.vim/shell/copy.sh606     au VimEnter * source ~/.ctags/session.vim607 endif608 609 let g:AutoCscopeFile = g:Newpwd . "/cscope.out"610 if(expand(g:AutoCscopeFile) == findfile(expand(g:AutoCscopeFile)))611     " 必须这样截取,否则多余的结束符^@会导致cs add 异常. 612     let path = strpart(g:AutoCscopeFile, 0, match(g:AutoCscopeFile, "cscope.out"))613     let cmd = "cs add " . path . "cscope.out"614     " echo "path:" path615     " echo "cmd:" cmd616     silent: exec cmd617 endif618 619 au VimLeave * call LeaveHandler()620 function! LeaveHandler()621     if (g:quit_save == 1)622         let g:path = system("~/.vim/shell/get_path.sh " . shellescape(expand('%:h')))623         let execcmd = "mks! ". g:path624         echo execcmd625         exec execcmd626     else627         echo "exit but no save session.vim"628     endif629 endfunction630 631 


现在,基本可以使用vim代替si了 !

原创粉丝点击