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

doing5552

記錄每日點(diǎn)滴,不枉人生一世

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  73 Posts :: 0 Stories :: 94 Comments :: 0 Trackbacks

公告

常用鏈接

留言簿(24)

我參與的團(tuán)隊(duì)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 456153
  • 排名 - 49

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

這里所說(shuō)的IDE主要是指C/C++開發(fā),但是由于筆者之前也搞java和c#開發(fā),所以對(duì)這兩種語(yǔ)言也會(huì)有所兼顧。

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

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

if(has("win32") || has("win95") || has("win64") || has("win16")) "判定當(dāng)前操作系統(tǒng)類型
    let g:iswindows=1
else
    let g:iswindows=0
endif
set nocompatible "不要vim模仿vi模式,建議設(shè)置,否則會(huì)有很多不兼容的問(wèn)題
syntax on"打開高亮
if has("autocmd")
    filetype plugin indent on "根據(jù)文件進(jìn)行縮進(jìn)
    augroup vimrcEx
        au!
        autocmd FileType text setlocal textwidth=78
        autocmd BufReadPost *
                    \ if line("'\"") > 1 && line("'\"") <= line("$") | "實(shí)現(xiàn)打開同一文件時(shí),vim能夠自動(dòng)記住上一次的位置
                    \ exe "normal! g`\"" |
                    \ endif
    augroup END
else
    set autoindent " always set autoindenting on "智能縮進(jìn),相應(yīng)的有cindent,官方說(shuō)autoindent可以支持各種文件的縮進(jìn),但是效果會(huì)比只支持C/C++的cindent效果會(huì)差一點(diǎn), 但筆者并沒(méi)有看出來(lái)
endif " has("autocmd")
set tabstop=4 "讓一個(gè)tab等于4個(gè)空格
set vb t_vb=
set nowrap "不自動(dòng)換行
set hlsearch "高亮顯示結(jié)果
set incsearch "在輸入要搜索的文字時(shí),vim會(huì)實(shí)時(shí)匹配
set backspace=indent,eol,start whichwrap+=<,>,[,] "允許退格鍵的使用
if(g:iswindows==1) "允許鼠標(biāo)的使用
    "防止linux終端下無(wú)法拷貝
    if has('mouse')
        set mouse=a
    endif
    au GUIEnter * simalt ~x
endif
"字體的設(shè)置
set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI "記住空格用下劃線代替哦
set gfw=幼圓:h10:cGB2312

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


OK,上一篇文章,我們已經(jīng)配置好了一個(gè)可以正常使用的VIM,那么在我們真正來(lái)到程序員的VIM世界之前,希望你能在VIM里面再多加下面幾個(gè)配置。

set go= "無(wú)菜單、工具欄"

對(duì),讓我真正拋棄鼠標(biāo),進(jìn)入美妙的VIM之旅吧!

首先說(shuō)說(shuō)一個(gè)IDE應(yīng)該有的幾個(gè)功能:

1)源代碼結(jié)構(gòu)及函數(shù)列表

2)變量定義支持跳轉(zhuǎn)等

3)代碼自動(dòng)補(bǔ)全

當(dāng)然VIM還給了我們幾個(gè)小驚喜:

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

5)由注釋直接生成文檔

6)文件頭作者信息自動(dòng)添加

7).cpp和.h文件之間的快速切換

那么接下來(lái),我們久來(lái)看看我們將會(huì)用到的插件列表。

首先介紹一下一些必備知識(shí),我們需要下面兩樣?xùn)|西,來(lái)輔助完成vim成為IDE的大業(yè)--ctags和cscope,這兩樣?xùn)|西不是vim的插件而 是可執(zhí)行程序,linux和windows下都有。ctags主要實(shí)現(xiàn)了c、c++、java、c#等語(yǔ)言的智能分析,并聲稱tags文件,后面所有的包 括函數(shù)列表顯示,變量定義跳轉(zhuǎn),自動(dòng)補(bǔ)全等,都要依賴于他。有了tags文件后,只需要在變量上按下 CTRL + ]鍵,就可以自動(dòng)跳到變量定義的位置。而cscope據(jù)說(shuō)誕生就是為了來(lái)替代ctags的,因?yàn)樗兄萩tags更加強(qiáng)大的功能,舉個(gè)例子,ctags 只能分析出這個(gè)函數(shù)在哪里被定義,而cscope除了這一點(diǎn)之外,還能分析出這個(gè)函數(shù)再哪里被調(diào)用。當(dāng)然cscope目前還是有不少bug的,但是也不影 響我們的使用。

1)taglist.vim 實(shí)現(xiàn)了源代碼結(jié)構(gòu)和函數(shù)列表的展示,功能非常強(qiáng)大

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

2)有了tags就自動(dòng)支持了

3)omnicppcomplete.vim 實(shí)現(xiàn)寫C/C++語(yǔ)言時(shí)自動(dòng)補(bǔ)全

4)NERD_commenter.vim 注釋插件

5)DoxygenToolkit.vim 由注釋生成文檔,并且能夠快速生成函數(shù)標(biāo)準(zhǔn)注釋

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

7)a.vim 實(shí)現(xiàn).cpp和.h快速切換

下面一個(gè)個(gè)的講解配置:

首先確認(rèn)安裝了ctags和cscope,并且確認(rèn)這兩個(gè)可執(zhí)行程序所在的目錄已經(jīng)放進(jìn)環(huán)境變量里面。(必須做,否則后邊都無(wú)法操作)

在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

先截個(gè)圖給大家看下:

taglist

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

"進(jìn)行Tlist的設(shè)置
"TlistUpdate可以更新tags
map <F3> :silent! Tlist<CR> "按下F3就可以呼出了
let Tlist_Ctags_Cmd='ctags' "因?yàn)槲覀兎旁诃h(huán)境變量里,所以可以直接執(zhí)行
let Tlist_Use_Right_Window=1 "讓窗口顯示在右邊,0的話就是顯示在左邊
let Tlist_Show_One_File=0 "讓taglist可以同時(shí)展示多個(gè)文件的函數(shù)列表,如果想只有1個(gè),設(shè)置為1
let Tlist_File_Fold_Auto_Close=1 "非當(dāng)前文件,函數(shù)列表折疊隱藏
let Tlist_Exit_OnlyWindow=1 "當(dāng)taglist是最后一個(gè)分割窗口時(shí),自動(dòng)推出vim
"是否一直處理tags.1:處理;0:不處理
let Tlist_Process_File_Always=0 "不是一直實(shí)時(shí)更新tags,因?yàn)闆](méi)有必要
let Tlist_Inc_Winwidth=0

showfunc.vim    下載showfunc.vim

截圖如下:

showfunc

這個(gè)插件實(shí)現(xiàn)了按下fd,就可以提示當(dāng)前光標(biāo)所在函數(shù)的定義,另外還實(shí)現(xiàn)了當(dāng)輸入'('時(shí),會(huì)自動(dòng)匹配tags,展示函數(shù)的定義原型。

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

2)已經(jīng)在上面解釋過(guò),所以這里不再做贅述

OK,到這里,我們已經(jīng)能夠成功的顯示函數(shù)列表和查看函數(shù)定義了,閱讀代碼已經(jīng)沒(méi)有問(wèn)題了,剩下的就是要在寫代碼過(guò)程中用到的插件啦,我們?cè)?a >把VIM打造成一個(gè)真正的IDE(3)中繼續(xù)~

版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處。 http://www.vimer.cn


好了,接著前面的兩篇,我們今天來(lái)寫《把VIM打造成一個(gè)真正的IDE》系列的終結(jié)篇。

我們之前已經(jīng)讓在VIM下看代碼變得方便與簡(jiǎn)單,現(xiàn)在我們來(lái)讓用Vim寫代碼也一樣方便~看完本篇之后,你就可以完全拋棄sourceinsight之類的工具啦~

3)omnicppcomplete.vim 實(shí)現(xiàn)寫C/C++語(yǔ)言時(shí)自動(dòng)補(bǔ)全  下載插件

慣例,先截圖:

代碼補(bǔ)全

其實(shí)使用很簡(jiǎn)單,下載 omnicppcomplete

然后按照說(shuō)明將插件安裝到vimfiles下面,目錄結(jié)構(gòu)如下:

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然后去享受吧~~

順便說(shuō)一下:omnicppcomplete會(huì)打開一個(gè)預(yù)覽窗口來(lái)提示變量定義,如果不想要看到詳細(xì)的信息的話,在vimrc中這樣配置:

set completeopt=menu

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

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

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

這樣的話,在光標(biāo)所在行上,按下一次ctrl+h是注釋,再按下一次是取消注釋。

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

5)DoxygenToolkit.vim 由注釋生成文檔,并且能夠快速生成函數(shù)標(biāo)準(zhǔn)注釋 下載地址

這個(gè)插件使得vim能夠生成標(biāo)準(zhǔn)的函數(shù)注釋,如圖:

函數(shù)注釋

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設(shè)置成為自己的名字,OK,這樣標(biāo)準(zhǔn)格式的代碼注釋就出來(lái)啦。

5)a.vim .cpp和.h文件快速切換 下載地址

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

直接可以:A,打開.cpp和.h對(duì)應(yīng)的文件,:AV,打開.cpp和.h對(duì)應(yīng)的文件,并且分屏,截圖如下:

AV

OK,如果你按照我的說(shuō)明將vim配置了下來(lái),那么你的vim應(yīng)該已經(jīng)是一個(gè)超級(jí)強(qiáng)悍的IDE啦,快去寫寫代碼試試吧,是不是和之前很是不同了啊,哈哈。

版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處。http://www.vimer.cn

版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處。www.vimer.cn

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

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   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>
            国产精品v亚洲精品v日韩精品 | 欧美黄色一区| 久久综合伊人77777麻豆| 久久国产福利| 久热爱精品视频线路一| 欧美电影在线免费观看网站| 欧美精品午夜视频| 国产精品欧美久久| 国内精品视频在线播放| 亚洲第一精品夜夜躁人人躁| 99精品久久免费看蜜臀剧情介绍| 亚洲女同性videos| 久久天天躁狠狠躁夜夜爽蜜月| 欧美国产乱视频| 一区二区三区|亚洲午夜| 性欧美xxxx大乳国产app| 久久色在线观看| 国产精品扒开腿做爽爽爽视频| 国产日韩欧美综合在线| 在线日韩av片| 久久综合久久综合九色| 久久全球大尺度高清视频| 欧美成人精品在线播放| 欧美午夜不卡| 精品成人国产| 亚洲一区影音先锋| 免费成人av| 中文欧美字幕免费| 久久国产一区| 国产精品久久久爽爽爽麻豆色哟哟| 国产亚洲日本欧美韩国| 99亚洲伊人久久精品影院红桃| 亚欧成人精品| 日韩午夜免费| 欧美高清在线观看| 很黄很黄激情成人| 美女视频黄a大片欧美| 欧美一级理论性理论a| 欧美日韩另类国产亚洲欧美一级| 国产精品成人播放| 亚洲国产精品精华液网站| 亚洲一区免费网站| 亚洲黄页视频免费观看| 亚洲一区二区在线看| 欧美连裤袜在线视频| 曰本成人黄色| 久久久另类综合| 欧美亚洲尤物久久| 国产日韩精品在线观看| 亚洲欧美另类在线观看| 日韩亚洲欧美成人一区| 免费成人av在线看| 亚洲国产一区二区三区高清| 久久久亚洲影院你懂的| 亚洲欧美日本在线| 国产精品夜夜夜| 午夜一区二区三区不卡视频| 一本久道久久综合中文字幕| 欧美日本一道本| 亚洲深夜影院| 亚洲一区二区三区在线看| 国产精品日韩在线观看| 欧美亚洲一区| 久久精品国产2020观看福利| 一区二区视频欧美| 欧美成年人视频网站欧美| 蜜臀久久99精品久久久久久9| 亚洲国产另类精品专区| 亚洲精品欧美激情| 国产精品va在线播放| 欧美一区2区三区4区公司二百| 亚洲欧美欧美一区二区三区| 国产一区二区三区观看| 欧美成人高清视频| 欧美另类69精品久久久久9999| 在线一区二区三区做爰视频网站| 亚洲视频免费在线观看| 国产亚洲欧美日韩精品| 久久久久久久一区| 欧美国产日本在线| 亚洲综合日韩中文字幕v在线| 午夜精品福利一区二区三区av| 国产偷国产偷亚洲高清97cao| 女女同性女同一区二区三区91| 欧美.www| 欧美一级大片在线免费观看| 午夜欧美大片免费观看| 伊人蜜桃色噜噜激情综合| 欧美福利视频网站| 欧美午夜视频在线| 久久婷婷蜜乳一本欲蜜臀| 欧美激情综合| 久久精品国产综合| 欧美精品乱码久久久久久按摩| 亚洲综合日本| 久久www免费人成看片高清| 亚洲国产精品久久久久秋霞影院 | 麻豆免费精品视频| 欧美国产第二页| 翔田千里一区二区| 蜜桃伊人久久| 午夜欧美精品久久久久久久| 久久综合九色综合久99| 亚洲欧美中文在线视频| 久久久999精品| 亚洲欧美成人网| 欧美精品粉嫩高潮一区二区 | 在线亚洲免费视频| 久久亚洲一区| 久久精品亚洲乱码伦伦中文| 欧美日本在线播放| 欧美国产日韩一区二区| 国产欧美丝祙| 中文精品视频一区二区在线观看| 亚洲人www| 久久久免费av| 久久久亚洲人| 国产亚洲欧美日韩精品| 亚洲字幕一区二区| 亚洲午夜羞羞片| 欧美激情一区二区三区不卡| 蜜桃久久av一区| 黄色成人在线观看| 久久久久久久国产| 久久精品国产免费| 国产日韩欧美三区| 亚洲尤物视频在线| 欧美一区在线视频| 国产精品五区| 亚洲一区欧美一区| 欧美在线视频网站| 国内精品视频666| 欧美日本在线一区| 午夜亚洲性色视频| 欧美极品影院| 欧美xxx成人| 在线播放亚洲一区| 久久精品国产免费| 久久精品视频99| 国产午夜精品一区二区三区视频 | 亚洲理论在线| 亚洲一区国产精品| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美一区国产在线| 欧美一级大片在线观看| 国产精品美女久久久久久久| 亚洲一区二区三区三| 久久精品国产精品| 欧美中文字幕第一页| 国产女人精品视频| 久久精品av麻豆的观看方式| 久久精品123| 亚洲国产精品毛片| 欧美日韩精品综合| 亚洲主播在线| 久久婷婷麻豆| 一本久久a久久精品亚洲| 欧美午夜电影网| 欧美一乱一性一交一视频| 欧美fxxxxxx另类| 一区二区三区 在线观看视频| 欧美婷婷久久| 久久精品视频在线| 亚洲黄色在线| 午夜久久资源| 91久久线看在观草草青青| 欧美午夜精品伦理| 久久九九有精品国产23| 亚洲麻豆一区| 快播亚洲色图| 亚洲欧美在线网| 亚洲国产成人在线| 欧美日韩亚洲综合一区| 欧美中文字幕第一页| 亚洲国产日本| 久久久久一区二区三区四区| 日韩午夜电影| 黄色成人免费观看| 欧美午夜宅男影院在线观看| 久久精品亚洲一区二区三区浴池| 亚洲毛片在线免费观看| 久久精品一区二区国产| 亚洲麻豆av| 韩国三级电影一区二区| 欧美视频四区| 欧美成黄导航| 久久理论片午夜琪琪电影网| 亚洲一级在线| 亚洲美女在线看| 欧美国产日韩精品| 美脚丝袜一区二区三区在线观看 | 国产精品视频导航| 欧美日韩1234| 蜜桃久久精品乱码一区二区| 先锋亚洲精品| 亚洲一区免费网站| 亚洲午夜精品久久久久久浪潮| 亚洲人成在线播放| 欧美国产精品v| 欧美刺激午夜性久久久久久久|