青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

doing5552

記錄每日點滴,不枉人生一世

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  73 Posts :: 0 Stories :: 94 Comments :: 0 Trackbacks

公告

常用鏈接

留言簿(24)

我參與的團隊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 456154
  • 排名 - 49

最新隨筆

最新評論

閱讀排行榜

評論排行榜

這里所說的IDE主要是指C/C++開發,但是由于筆者之前也搞java和c#開發,所以對這兩種語言也會有所兼顧。

這個話題可能要分好幾篇文章來寫了,今天主要講一下最簡單的,包括vimrc里面的基本配置,讓vim能夠完美支持各種源碼文件;

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

if(has("win32") || has("win95") || has("win64") || has("win16")) "判定當前操作系統類型
    let g:iswindows=1
else
    let g:iswindows=0
endif
set 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("$") | "實現打開同一文件時,vim能夠自動記住上一次的位置
                    \ exe "normal! g`\"" |
                    \ endif
    augroup END
else
    set autoindent " always set autoindenting on "智能縮進,相應的有cindent,官方說autoindent可以支持各種文件的縮進,但是效果會比只支持C/C++的cindent效果會差一點, 但筆者并沒有看出來
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 ~x
endif
"字體的設置
set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI "記住空格用下劃線代替哦
set gfw=幼圓:h10:cGB2312

OK,有了上面的基本設置,一個好用的vim就配置好了,但是如果想讓它完美支持各種源代碼文件,想讓它方便的注釋,方便的進行代碼提示,方便的添加用戶信息,那還差的很遠哦,就請期待下一篇吧-----把VIM打造成一個真正的IDE(2)


OK,上一篇文章,我們已經配置好了一個可以正常使用的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 實現了源代碼結構和函數列表的展示,功能非常強大

showfunc.vim 一個展示C/C++/java/C#函數原型的插件,原本是echofunc.vim但是不支持java,c#,所以我把他改了。下載showfunc.vim

2)有了tags就自動支持了

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

4)NERD_commenter.vim 注釋插件

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

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

7)a.vim 實現.cpp和.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
    endif
endfunction

 1)taglist.vim

先截個圖給大家看下:

taglist

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

"進行Tlist的設置
"TlistUpdate可以更新tags
map <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個,設置為1
let Tlist_File_Fold_Auto_Close=1 "非當前文件,函數列表折疊隱藏
let Tlist_Exit_OnlyWindow=1 "當taglist是最后一個分割窗口時,自動推出vim
"是否一直處理tags.1:處理;0:不處理
let Tlist_Process_File_Always=0 "不是一直實時更新tags,因為沒有必要
let Tlist_Inc_Winwidth=0

showfunc.vim    下載showfunc.vim

截圖如下:

showfunc

這個插件實現了按下fd,就可以提示當前光標所在函數的定義,另外還實現了當輸入'('時,會自動匹配tags,展示函數的定義原型。

只需要把這個插件放到plugin下就行,不需要配置。

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

OK,到這里,我們已經能夠成功的顯示函數列表和查看函數定義了,閱讀代碼已經沒有問題了,剩下的就是要在寫代碼過程中用到的插件啦,我們在把VIM打造成一個真正的IDE(3)中繼續~

版權所有,轉載請注明出處。 http://www.vimer.cn


好了,接著前面的兩篇,我們今天來寫《把VIM打造成一個真正的IDE》系列的終結篇。

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

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

慣例,先截圖:

代碼補全

其實使用很簡單,下載 omnicppcomplete

然后按照說明將插件安裝到vimfiles下面,目錄結構如下:

after\ftplugin\cpp.vim
after\ftplugin\c.vim
autoload\omni\common\debug.vim
\utils.vim
autoload\omni\cpp\complete.vim
\includes.vim
\items.vim
\maycomplete.vim
\namespaces.vim
\settings.vim
\tokenizer.vim
\utils.vim
doc\omnicppcomplete.txt

然后需要生成tags,哈哈,記得我們之前用F12映射的命令吧(把Vim打造成真正的IDE(2)),按下F12然后去享受吧~~

順便說一下:omnicppcomplete會打開一個預覽窗口來提示變量定義,如果不想要看到詳細的信息的話,在vimrc中這樣配置:

set completeopt=menu

4)NERD_commenter.vim 注釋插件 下載插件

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

"對NERD_commenter的設置
let NERDShutUp=1
"支持單行和多行的選擇,//格式
map <c-h> ,c<space>

這樣的話,在光標所在行上,按下一次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對應的文件,并且分屏,截圖如下:

AV

OK,如果你按照我的說明將vim配置了下來,那么你的vim應該已經是一個超級強悍的IDE啦,快去寫寫代碼試試吧,是不是和之前很是不同了啊,哈哈。

版權所有,轉載請注明出處。http://www.vimer.cn

版權所有,轉載請注明出處。www.vimer.cn

posted on 2010-02-06 17:53 doing5552 閱讀(9947) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品成人在线观看| 欧美激情精品久久久久久久变态 | 麻豆精品传媒视频| 久久国产精品99精品国产| 亚洲网站在线| 亚洲综合视频一区| 欧美一级大片在线免费观看| 午夜精品国产更新| 久久久之久亚州精品露出| 亚洲精品久久久久久下一站| 亚洲美女黄色片| 亚洲手机在线| 久久久久九九九九| 亚洲第一精品电影| 亚洲国产影院| 亚洲无线一线二线三线区别av| 亚洲一区二区免费看| 欧美在线观看一区二区| 久久躁日日躁aaaaxxxx| 欧美久久九九| 国产亚洲欧美另类一区二区三区| 亚洲国产精品久久久久秋霞不卡| 亚洲视频电影在线| 国产视频在线观看一区二区| 91久久亚洲| 亚洲一区二区三区久久| 久久国产精品网站| 欧美精品99| 国产一区二区三区在线观看精品| 最新中文字幕一区二区三区| 亚洲欧美综合精品久久成人| 欧美成年人在线观看| 亚洲美女91| 久久久久久精| 国产精品久久久久久影视 | 国产欧美亚洲一区| 亚洲日本va午夜在线电影| 午夜精品久久久久影视| 免费观看成人www动漫视频| 一区二区免费看| 欧美成年人视频网站| 亚洲一品av免费观看| 欧美91精品| 狠狠入ady亚洲精品| 亚洲欧美日韩在线观看a三区 | 欧美一级日韩一级| 亚洲国产精品成人综合| 欧美一区亚洲二区| 国产精品成人在线| 一区二区高清| 亚洲国产第一| 久久综合电影| 激情亚洲网站| 久久久噜噜噜久久中文字免| 亚洲视频高清| 欧美视频在线观看免费| 亚洲乱码精品一二三四区日韩在线| 久久亚洲精品中文字幕冲田杏梨 | 久久久美女艺术照精彩视频福利播放| 欧美日韩在线视频一区二区| 欧美日韩一区自拍| 99在线精品视频| 亚洲国产精品久久久久秋霞蜜臀| 久久国产精品电影| 国产一区二区高清不卡| 性一交一乱一区二区洋洋av| 亚洲午夜高清视频| 国产精品久久久免费| 亚洲专区欧美专区| 亚洲专区一区二区三区| 国产精品亚洲а∨天堂免在线| 亚洲欧美日韩综合aⅴ视频| 亚洲午夜在线| 狠狠色狠色综合曰曰| 欧美激情区在线播放| 国产在线一区二区三区四区 | 亚洲伦理自拍| 夜夜夜久久久| 国产女人精品视频| 久久一区二区三区四区五区| 免费一级欧美片在线观看| 亚洲精品视频在线观看免费| 亚洲精品一区二区三区99| 欧美性感一类影片在线播放| 午夜在线a亚洲v天堂网2018| 欧美一区三区二区在线观看| 亚洲高清av在线| 日韩小视频在线观看专区| 欧美午夜精品久久久久久孕妇| 亚洲一区二区三区精品视频 | 欧美日韩免费观看一区| 国产视频一区二区在线观看 | 亚洲大胆av| 女人天堂亚洲aⅴ在线观看| 久久精品国产精品亚洲综合| 伊人久久亚洲热| 欧美激情国产日韩| 欧美日本二区| 欧美在线资源| 久热精品视频| 欧美激情欧美狂野欧美精品| 欧美一区二视频在线免费观看| 午夜影视日本亚洲欧洲精品| 黄色国产精品| 亚洲欧洲中文日韩久久av乱码| 欧美日韩亚洲综合一区| 性欧美8khd高清极品| 欧美一区二区三区久久精品| 激情久久中文字幕| 亚洲人成网站999久久久综合| 欧美午夜在线一二页| 久久久国产一区二区| 久热精品视频在线| 亚洲免费网址| 免费的成人av| 亚洲一区二区三区四区中文| 欧美综合国产| 一区二区三区四区蜜桃| 午夜国产精品视频免费体验区| 国外成人在线视频网站| 亚洲国产另类 国产精品国产免费| 欧美日韩免费网站| av成人免费在线观看| 卡一卡二国产精品| 性久久久久久久久| 欧美日韩在线免费视频| 欧美mv日韩mv亚洲| 国产精品一区毛片| 亚洲日韩成人| 亚洲成人在线视频播放| 亚洲欧美亚洲| 亚欧成人在线| 国产精品美腿一区在线看| 欧美高清在线视频| 国产视频亚洲精品| 正在播放亚洲一区| 亚洲精品在线视频观看| 欧美一区二区视频在线| 亚洲亚洲精品在线观看| 欧美性猛交99久久久久99按摩| 欧美国产精品一区| 一区免费视频| 久久er精品视频| 欧美伊人久久久久久久久影院| 欧美日韩亚洲一区二区三区| 亚洲午夜黄色| 午夜精品99久久免费| 欧美日韩亚洲另类| 亚洲免费观看| 一区二区三区四区蜜桃| 欧美一区二区日韩| 欧美aaaaaaaa牛牛影院| 韩日欧美一区二区三区| 欧美在线高清视频| 久久久久国产精品人| 国产三区精品| 亚洲私人影吧| 久久久久久久久久久久久久一区 | 亚洲理论在线观看| 蜜桃av噜噜一区| 免费观看久久久4p| 亚洲高清一区二| 免费欧美日韩| 亚洲国产天堂久久国产91| 亚洲一区在线直播| 国产精品视频久久一区| 亚洲亚洲精品在线观看| 午夜视频久久久久久| 国产精品视频不卡| 亚洲女性喷水在线观看一区| 国产午夜精品全部视频播放| 欧美aⅴ一区二区三区视频| 亚洲国产精品久久91精品| 亚洲美女视频网| 欧美三级视频| 亚洲欧美日韩在线一区| 亚欧成人在线| 亚洲精品一区二区三区99| 欧美日本三区| 午夜精品久久久久久久久久久| 国产日韩欧美中文| 久久综合狠狠综合久久综合88 | 99这里只有久久精品视频| 欧美一区二区三区另类| 影音先锋久久| 欧美日韩国产三级| 亚洲精品视频在线看| 久久夜色精品亚洲噜噜国产mv| 91久久精品国产91久久| 欧美午夜一区二区三区免费大片 | 久久漫画官网| 久久久久免费观看| 欧美日韩免费观看一区| 亚洲国产精品成人va在线观看| 久久精品一区蜜桃臀影院 | 久久综合伊人| 亚洲午夜在线视频| 欧美刺激性大交免费视频| 亚洲一二三级电影| 亚洲大胆在线|