把vim打造成一個真正的IDE

來源:互聯網
上載者:User

 

十個必用的 Vim Plugin

http://www.openfoundry.org/en/tech-article/2244

 

vimrc配置如下(為簡單起見,採取注釋的方式直接說明):

if(has("win32") || has("win95") || has("win64") || has("win16")) "判定當前作業系統類型    let g:iswindows=1else    let g:iswindows=0endifset nocompatible "不要vim模仿vi模式,建議設定,否則會有很多不相容的問題syntax on"開啟高亮if has("autocmd")    filetype plugin indent on "根據檔案進行縮排    augroup vimrcEx        au!        autocmd FileType text setlocal textwidth=78        autocmd BufReadPost *                    \ if line("'\"") > 1 && line("'\"") <= line("$") |                    \ exe "normal! g`\"" |                    \ endif    augroup ENDelse    "智慧縮排,相應的有cindent,官方說autoindent可以支援各種檔案的縮排,但是效果會比只支援C/C++的cindent效果會差一點,但筆者並沒有看出來    set autoindent " always set autoindenting on endif " has("autocmd")set tabstop=4 "讓一個tab等於4個空格set vb t_vb=set nowrap "不自動換行set hlsearch "高亮顯示結果set incsearch "在輸入要搜尋的文字時,vim會即時匹配set backspace=indent,eol,start whichwrap+=<,>,[,] "允許退格鍵的使用if(g:iswindows==1) "允許滑鼠的使用    "防止linux終端下無法拷貝    if has('mouse')        set mouse=a    endif    au GUIEnter * simalt ~xendif"字型的設定set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI "記住空格用底線代替哦set gfw=幼圓:h10:cGB2312

OK,有了上面的基本設定,一個好用的vim就配置好了,但是如果想讓它完美支援各種原始碼檔案,想讓它方便的注釋,方便的進行代碼提示,方便的添加使用者資訊,那還差的很遠。

我們已經配置好了一個可以正常使用的VIM,那麼在我們真正來到程式員的VIM世界之前,希望你能在VIM裡面再多加下面幾個配置。

set go= "無菜單、工具列"

對,讓我真正拋棄滑鼠,進入美妙的VIM之旅吧!

首先說說一個IDE應該有的幾個功能:

1)原始碼結構及函數列表

2)變數定義支援跳轉等

3)代碼自動補全

當然VIM還給了我們幾個小驚喜:

4)快速批量注釋與反注釋

5)由注釋直接產生文檔

6)檔案頭作者資訊自動添加

7).cpp和.h檔案之間的快速切換

那麼接下來,我們久來看看我們將會用到的外掛程式列表。

首先介紹一下一些必備知識,我們需要下面兩樣東西,來輔助完成vim成為IDE的大業--ctags和cscope,這兩樣東西不是vim的外掛程式而是可執行程式,linux和windows下都有。ctags主要實現了c、c++、java、c#等語言的智能分析,並聲稱tags檔案,後面所有的包括函數列表顯示,變數定義跳轉,自動補全等,都要依賴於他。有了tags檔案後,只需要在變數上按下 CTRL + ]鍵,就可以自動跳到變數定義的位置。而cscope據說誕生就是為了來替代ctags的,因為他有著比ctags更加強大的功能,舉個例子,ctags只能分析出這個函數在哪裡被定義,而cscope除了這一點之外,還能分析出這個函數再哪裡被調用。當然cscope目前還是有不少bug的,但是也不影響我們的使用。

1)taglist.vim 實現了原始碼結構和函數列表的展示,功能非常強大

2)有了tags就自動支援了

3)omnicppcomplete.vim 實現寫C/C++語言時自動補全

4)NERD_commenter.vim 注釋外掛程式

5)DoxygenToolkit.vim 由注釋產生文檔,並且能夠快速產生函數標準注釋

6)這段配置是本人自己寫的稍後貼出。

7)a.vim 實現.cpp和.h快速切換

下面一個個的講解配置:
注意,請先檢查是否有如下配置,如果沒有請添加:

if(has("win32") || has("win95") || has("win64") || has("win16"))    let g:vimrc_iswindows=1else    let g:vimrc_iswindows=0endifautocmd BufEnter * lcd %:p:h

首先確認安裝了ctags和cscope,並且確認這兩個可執行程式所在的目錄已經放進環境變數裡面。(必須做,否則後邊都無法操作)

在vimrc中配置如下:

map <F12> :call Do_CsTag()<CR>nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>:copen<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>:copen<CR>nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>:copen<CR>nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>:copen<CR>nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>:copen<CR>nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>:copen<CR>nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>:copen<CR>function Do_CsTag()    let dir = getcwd()    if filereadable("tags")        if(g:iswindows==1)            let tagsdeleted=delete(dir."\\"."tags")        else            let tagsdeleted=delete("./"."tags")        endif        if(tagsdeleted!=0)            echohl WarningMsg | echo "Fail to do tags! I cannot delete the tags" | echohl None            return        endif    endif    if has("cscope")        silent! execute "cs kill -1"    endif    if filereadable("cscope.files")        if(g:iswindows==1)            let csfilesdeleted=delete(dir."\\"."cscope.files")        else            let csfilesdeleted=delete("./"."cscope.files")        endif        if(csfilesdeleted!=0)            echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.files" | echohl None            return        endif    endif    if filereadable("cscope.out")        if(g:iswindows==1)            let csoutdeleted=delete(dir."\\"."cscope.out")        else            let csoutdeleted=delete("./"."cscope.out")        endif        if(csoutdeleted!=0)            echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.out" | echohl None            return        endif    endif    if(executable('ctags'))        "silent! execute "!ctags -R --c-types=+p --fields=+S *"        silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."    endif    if(executable('cscope') && has("cscope") )        if(g:iswindows!=1)            silent! execute "!find . -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.java' -o -name '*.cs' > cscope.files"        else            silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"        endif        silent! execute "!cscope -b"        execute "normal :"        if filereadable("cscope.out")            execute "cs add cscope.out"        endif    endifendfunction

1)taglist.vim

先截個圖看下:

把taglist.vim放在plugin目錄下後,在vimrc中添加如下的配置:

"進行Tlist的設定"TlistUpdate可以更新tagsmap <F3> :silent! Tlist<CR> "按下F3就可以呼出了let Tlist_Ctags_Cmd='ctags' "因為我們放在環境變數裡,所以可以直接執行let Tlist_Use_Right_Window=1 "讓視窗顯示在右邊,0的話就是顯示在左邊let Tlist_Show_One_File=0 "讓taglist可以同時展示多個檔案的函數列表,如果想只有1個,設定為1let Tlist_File_Fold_Auto_Close=1 "非當前檔案,函數列表摺疊隱藏let Tlist_Exit_OnlyWindow=1 "當taglist是最後一個分割視窗時,自動推出vimlet Tlist_Process_File_Always=0 "是否一直處理tags.1:處理;0:不處理。不是一直即時更新tags,因為沒有必要let Tlist_Inc_Winwidth=0

2)已經在上面解釋過,所以這裡不再做贅述

OK,到這裡,我們已經能夠成功的顯示函數列表和查看函數定義了,閱讀代碼已經沒有問題了,剩下的就是要在寫代碼過程中用到的外掛程式。

之前已經讓在VIM下看代碼變得方便與簡單,現在我們來讓用Vim寫代碼也一樣方便~之後你就可以完全拋棄sourceinsight之類的工具啦~

3)omnicppcomplete.vim 實現寫C/C++語言時自動補全  下載外掛程式

4)NERD_commenter.vim 注釋外掛程式 下載外掛程式

也是程式員非常實用的一款外掛程式,支援各種語言的補全,只要你能想到的,放心他絕對注釋的了,而且還支援單行注釋,批量注釋,等各種命令映射,在這裡,我把最常用的鍵映射在vimrc中配置了一下。

"對NERD_commenter的設定let NERDShutUp=1

這樣的話,在游標所在行上,按下一次ctrl+h是注釋,再按下一次是取消注釋。

而其內建的指令,cm是多行注釋,類似C++的/**/,,cu是取消注釋。

5)DoxygenToolkit.vim 由注釋產生文檔,並且能夠快速產生函數標準注釋 

這個外掛程式使得vim能夠產生標準的函數注釋。

map fg : Dox<cr>let g:DoxygenToolkit_authorName="dantezhu"let g:DoxygenToolkit_licenseTag="My own license\<enter>"let g:DoxygenToolkit_undocTag="DOXIGEN_SKIP_BLOCK"let g:DoxygenToolkit_briefTag_pre = "@brief\t"let g:DoxygenToolkit_paramTag_pre = "@param\t"let g:DoxygenToolkit_returnTag = "@return\t"let g:DoxygenToolkit_briefTag_funcName = "no"let g:DoxygenToolkit_maxFunctionProtoLines = 30

讀者可以需要將 DoxygenToolkit_authorName設定成為自己的名字,OK,這樣標準格式的代碼注釋就出來啦

5)a.vim .cpp和.h檔案快速切換 

把下載的a.vim放到plugin下,不需要配置。

直接可以:A,開啟.cpp和.h對應的檔案,:AV,開啟.cpp和.h對應的檔案,並且分屏,如下:

OK,如果你按照我的說明將vim配置了下來,那麼你的vim應該已經是一個超級強悍的IDE啦。

 

 

轉自:www.vimer.cn

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.