日期:2014-05-16  浏览次数:20908 次

怎么用Vim玩转工程!!!! 求高手指教~
系统: ubuntu

虽然经常用SI, 但是一直比较向往那种纯键盘操作的快感, 而且直接在linux写代码 不用为了smb出点问题就纠结而痛苦~ 最近看了贴子:
  http://blog.csdn.net/wooin/article/details/1858917
  
  也下了一些插件, vim编辑文本的速度是提高了些, 但是在工程方面 却感觉还是不如SI啊。。。  

  按照贴子上的装那个Grep插件,并修改~/.vimrc, 设置了查找快捷键
  nnoremap <silent> <F3> :Grep<CR>
  但是按F3的查找的时候老是找不到呢

  还有cscope find 按贴子上弄的快捷键, 用了没反应。。。 得按四个键... 我是没试出来的, 不知道是没设置对还是没按好,暂时只能 “cs find c my_func”的原始命令 很费劲!

  VIM 能不能像SI那样 在下方显示某个函数的定义 而不用跳到定义处去看了? 

  有没有经常用VIM写工程的 来讲解讲解 怎么用得更方便一点~ 有什么vim方面好的建议都可以说哈

  下面是我添加的vimrc的配置:
C/C++ code

//taglist
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1

//WinManager
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>

//Buffer
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplMapWindowNavVim=1

// Cscope 
set cscopequickfix=s-,c-,d-,i-,t-,e-
cs add /opt/29XXNR/nr288/user/cscope.out /opt/29XXNR/nr288/user
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>

// A.vim
nnoremap <silent> <F12> :A<CR>

//Grep
nnoremap <silent> <F3> :Grep<CR>

// tag
set completeopt=longest,menu
set tags= /dir/tags

// add line number
set nu


------解决方案--------------------
我觉得有这些插件已经很好用了……
gD, [i, 再加上:cs find, 已经非常好用了,基本上编程需要的都能找到了……
另外,再加上自动补齐功能,把标准库和系统库的include加进去,自动补齐的时候,连函数声明都有提示,这还不够用的嘛?
反正对我来说够用了……
下面是我的vimrc,给你参考一下……

C/C++ code

"    显示行号
set number

"    设置缩进
set tabstop=4
set shiftwidth=4
set autoindent
set cindent

"    设置高亮
syntax enable
syntax on
set hlsearch
nmap <f2> :noh<cr>

"    设置ctags、cscope和TagList
set tags=tags;
set autochdir
set cscopequickfix=s-,c-,d-,i-,t-,e-
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1

"    设置WinManager
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap mw :WMToggle<cr>

"    设置自动补齐
filetype plugin indent on
"set completeopt=longest,menu

"    设置OmniCppComplete
" ctags 索引文件 (根据已经生成的索引文件添加即可, 这里我额外添加了 hge 和 curl的索引文件)
set tags+=~/.vim/clib
set tags+=~/.vim/cpplib
set tags+=~/.vim/linuxlib
" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " 显示函数参数列表
let OmniCpp_MayCompleteDot = 1   " 输入 .  后自动补全
let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全
let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" 自动关闭补全窗口
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest

------解决方案--------------------
精辟
探讨

我觉得有这些插件已经很好用了……
gD, [i, 再加上:cs find, 已经非常好用了,基本上编程需要的都能找到了……
另外,再加上自动补齐功能,把标准库和系统库的include加进去,自动补齐的时候,连函数声明都有提示,这还不够用的嘛?
反正对我来说够用了…