国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

vim IDE平臺-打造屬于自己的配置

2024-06-28 13:19:01
字體:
供稿:網(wǎng)友
vim IDE平臺-打造屬于自己的配置

vim IDE平臺-打造屬于自己的配置

一、前言

目前工作環(huán)境基本以linux為主,自然用到VIM也很多,很早就對如何提高VIM的使用效率有所研究,限于時間關(guān)系,也沒做個系統(tǒng)記錄和資料積累,時間久了又容易忘,好久沒寫文檔了,算是對自己一個交代。本文所涉及的配置和插件在附件中有下載。

二、環(huán)境

開篇之前,有必要交代一下系統(tǒng)環(huán)境和常用軟件版本。

操作系統(tǒng): centos 6.2,2.6.32-431.el6.i686

git 版本: 3.2.29

yum版本: 1.8

vim版本 : 7.2.411

三、vim配置

3.1 基本配置

包括一些基本的語法,縮進(jìn),代碼折疊,高亮模式,窗口分割等,具體如下:

syn on              " 打開語法高亮set expandtab    " 轉(zhuǎn)義tab,當(dāng)寫python代碼時很有用set tabstop=4       " 設(shè)置tab鍵的寬度set softtabstop=4set backspace=2     " 設(shè)置退格鍵可用set smartindent     " 智能對齊方式set shiftwidth=4    " 換行時行間交錯使用4個空格set autoindent      " 自動對齊set cindent         "設(shè)置C/C++縮進(jìn)方式"set ai!             " 設(shè)置自動縮進(jìn)set nu!             " 顯示行號set linebreak       " 整詞換行set whichwrap=b,s,<,>,[,]       " 光標(biāo)從行首和行末時可以跳到另一行去set autochdir                   " 自動設(shè)置目錄為正在編輯的文件所在的目錄set hidden          " 沒有保存的緩沖區(qū)可以自動被隱藏set scrolloff=5"--------------------------------------------------------------------------------" 查找/替換相關(guān)的設(shè)置"--------------------------------------------------------------------------------set hlsearch        " 高亮顯示搜索結(jié)果set incsearch       " 查詢時非常方便,如要查找book單詞,當(dāng)輸入到/b時,會自動找到                    " 第一個b開頭的單詞,當(dāng)輸入到/bo時,會自動找到第一個bo開頭的                    " 單詞,依次類推,進(jìn)行查找時,使用此設(shè)置會快速找到答案,當(dāng)你                    " 找要匹配的單詞時,別忘記回車set gdefault        " 替換時所有的行內(nèi)匹配都被替換,而不是只有第一個set showmatch       " 設(shè)置匹配模式,類似當(dāng)輸入一個左括號時會匹配相應(yīng)的那個右括號colorscheme desert  "設(shè)置顏色模式"--------------------------------------------------------------------------------" 代碼折疊"--------------------------------------------------------------------------------set foldmethod=syntaxset foldlevel=100       " Don't autofold anything (but I can still fold manually)"set foldopen-=search   " don't open folds when you search into them"set foldopen-=undo     " don't open folds when you undo stuff"set foldcolumn=4" 窗口操作的快捷鍵"--------------------------------------------------------------------------------"  垂直分割當(dāng)前窗口nmap wv     <C-w>v     " 關(guān)閉當(dāng)前窗口nmap wc     <C-w>c     " 水平分割當(dāng)前窗口nmap ws     <C-w>s     
View Code

3.2 插件管理

前期基本對VIM插件未進(jìn)行管理,導(dǎo)致所有的插件都集中在.vim目錄下,這對于刪除一個插件來說還是比較麻煩的,目前管理vim插件的工具有幾個,比較出名的如pathogen和vundle這兩類,這兩個插件各有優(yōu)勢,應(yīng)用領(lǐng)域有所不同,關(guān)鍵區(qū)別如下:

pathogen: 解決多插件文件分散問題, 集中管理插件目錄,增加,刪除插件都很方便,

vundle: 解決自動搜索和下載插件問題, 方便插件的安裝和更新,使插件能夠時刻保持與線上版本一致

3.2.1 pathogen的安裝與配置

1) 下載:git clone https://github.com/tpope/vim-pathogen

2) 在.vim目錄下新建 autoload和bundle目錄

3) 將下載的pathogen包中的pathogen.vim拷貝到~/.vim/autoload

4) 配置pathogen: 在~/.vimrc中配置如下一句:

call pathogen#infect()

注意:此句一定要配置再filetype plugin on 之前

5) 作用:配好后,pathogen會自動加載位于bundle目錄下的所有插件

3.2.2 vundle配置

1) 下載:git clone https://github.com/gmarik/vundle.git

2) 安裝:將其復(fù)制到~/.vim/bundle目錄

3) 配置:

    set nocompatible               " be iMPRoved     filetype off                   " required!       /**  從這行開始,vimrc配置 **/     set rtp+=~/.vim/bundle/vundle/     call vundle#rc()     " let Vundle manage Vundle     " required!      Bundle 'gmarik/vundle'         "  Github上非vim-scripts倉庫插件格式(github用戶名/插件名)     Bundle 'tpope/vim-fugitive'         Bundle 'tpope/vim-rails.git'    " Github vim-scripts倉庫插件格式     Bundle 'python.vim'        " 非上述兩種模式     Bundle 'git://git.wincent.com/command-t.git'     " ...      filetype plugin indent on  " 必須有這句

四 、其它插件安裝

4.1 Taglist

作用:顯示文件變量、宏、函數(shù)等tag, 以tags文件為基礎(chǔ),結(jié)合ctags軟件使用

下載:http://sourceforge.net/projects/vim-taglist/files/vim-taglist/

安裝:直接拷貝vim-taglist目錄到~/.vim/bundle

配置:

"--------------------------------------------------------------------------------" TagList :Tlist"--------------------------------------------------------------------------------let Tlist_Show_One_File=1let Tlist_Exit_OnlyWindow = 1"let Tlist_Use_Right_Window=1

效果截圖:

4.2 winmanager

作用:規(guī)劃布局各插件在vim中的顯示,使其顯示分明

下載:http://www.vim.org/scripts/script.php?script_id=95

安裝:解壓目錄放到~/.vim/bundle下

配置:

"--------------------------------------------------------------------------------" WinManager :WMToggle"--------------------------------------------------------------------------------let g:winManagerWindowLayout='FileExplorer|TagList'"是nomal模式的命令,不是Ex模式的nmap wm :WMToggle<cr>  "快捷鍵

使用: 直接在vim命令行模式輸入WMToggle即可顯示winmanager布局,再次輸入WMToggle即可關(guān)閉布局

效果圖:

4.3 MiniBufExplorer

作用:顯示打開的文件標(biāo)簽欄,即類似于tab效果,方便文件間切換

下載: http://www.vim.org/scripts/script.php?script_id=159

安裝:直接將下載文件解壓放至~/.vim/bundle

配置:

"--------------------------------------------------------------------------------" MiniBufExp"--------------------------------------------------------------------------------let g:miniBufExplMapWindowNavArrows = 1 “按左右箭頭切換文件標(biāo)簽,再按enter鍵即可打開選擇的文件標(biāo)簽let g:miniBufExplMapCTabSwitchBufs = 1  "按Tab鍵也可達(dá)到切換效果

使用: 當(dāng)打開winmanger布局時,用ctrl+w+w命令進(jìn)入FileExplorer窗口, 按上下選擇鍵選擇文件回車打開,即可再miniBufExplorer窗口顯示打開的文件標(biāo)簽.

效果:如winmanager截圖,最上面的小窗口所示,同時打開了3個文件

4.4 grep.vim

作用:類似于grep功能,查找關(guān)鍵字

下載: http://www.vim.org/scripts/script.php?script_id=311

安裝: 解壓目錄至~/.vim/bundle

配置:

"直接按下<F3>鍵來查找光標(biāo)所在的字符串nnoremap <silent> <F3> :Rgrep<CR>

使用: 移動光標(biāo)至關(guān)鍵字處,按F3,會在vim命令行處顯示查找相關(guān)關(guān)鍵字的提示,按enter鍵進(jìn)入查找,然后選擇查找目錄,默認(rèn)是當(dāng)前目錄,按回車后會出現(xiàn)查找模式,默認(rèn)為*,即只要包含此管鍵字的文件行都會被查找出來,要退出查找過程也很簡單,按ESC鍵即可。

效果如下:如要查找about_pages關(guān)鍵字,鼠標(biāo)移動到該處,會作相應(yīng)的提示,最后一張是查找結(jié)果圖

4.5 a.vim

作用:頭文件和源文件快速切換,這對于C/C++項(xiàng)目來說還是很方便的

下載: http://www.vim.org/scripts/script.php?script_id=31

安裝: 解壓目錄至 ~/.vim/bundle

配置:

nnoremap <silent> <F12> :A<CR>

使用: 按F12鍵則可在源文件和頭文件之間切換

4.6 omnicppcomplete

作用: 智能C/C++庫補(bǔ)全, 為了使用此控件,還要下載專門的C++源庫文件,同時得先安裝好ctags軟件以便生成tags文件

下載:

#omnicomplete下載http://www.vim.org/scripts/script.php?script_id=1520#文件結(jié)構(gòu)類似于|--omnicppcomplete|---after|  |---ftplugin|---autoload|  |---omni|  |  |---common|  |  |---cpp|---doc#C++源庫下載http://www.vim.org/scripts/script.php?script_id=2358

安裝:

1) 對于omnicppcomplete, 解壓文件到~/.vim, 有after、autoload、doc三個目錄, autoload下有omni子目錄,注意使用bundle來管理時,如果將包解壓在~/.vim/bundle下時會識別不到,omni補(bǔ)全將失效;

2) 對于源碼,將其解壓到指定目錄,如/usr/local/cpp_src, 進(jìn)入該目錄,執(zhí)行ctags命令生成tags文件,具體如下:

cd /usr/local/cpp_srctar -jxvf cpp_src.tar.bz2ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .  #不能簡單的執(zhí)行ctags -R, 需要帶參數(shù)才能識別C++庫move tags cpp #重命名,非必須為區(qū)別起見

配置:

set completeopt=longest,menu    " 關(guān)掉智能補(bǔ)全時的預(yù)覽窗口filetype plugin indent on       " 加了這句才可以用智能補(bǔ)全let OmniCpp_MayCompleteDot = 1 " autocomplete withlet OmniCpp_MayCompleteArrow = 1 " autocomplete with ->let OmniCpp_MayCompleteScope = 1 " autocomplete with ::let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included fileslet OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup windowlet OmniCpp_GlobalScopeSearch=1 " enable the global scope searchlet OmniCpp_DisplayMode=1 " Class scope completion mode: always show all memberslet OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last columnlet OmniCpp_Showaccess=1"默認(rèn)以std 命名空間為準(zhǔn), using namespace stdlet OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] 
"加載CPP庫tags文件set tags+=/usr/local/cpp_src/cpp  

使用效果如下圖:

4.7 cscope

作用: 此插件作用相信用過的人誰用誰知道,windows下有SourceInsights, Linux 下也有Cscope來撐腰,通過它可以方便的查看函數(shù)定義及其函數(shù)調(diào)用關(guān)系

安裝:http://cscope.sourceforge.net/, 下載源碼包,編譯安裝,由于現(xiàn)在vim7.2已經(jīng)集成有cscope,所以如果vim版本是7以上的話就不用安裝了,同時為方便操作,cscope提供了大量的快捷鍵來操作以提高操作效率,快捷鍵映射需借助cscope_maps.vim插件,下載地址:在vim.org上有,可自行網(wǎng)上下載,下載后直接安裝在~/.vim/bundle/cscope下

配置:

"--------------------------------------------------------------------------------" cscope"--------------------------------------------------------------------------------cs add /home/src/cscope.out /home/src:set cscopequickfix=s-,c-,d-,i-,t-,e-:set cscopetag" 按下面這種組合鍵有技巧,按了<C-_>后要馬上按下一個鍵,否則屏幕一閃" 就回到nomal狀態(tài)了" <C-_>s的按法是先按"Ctrl+Shift+-",然后很快再按"s"nmap <C-_>s :cs find s <C-R>=expand("<cWord>")<cr><cr> :cw<cr> "查找C代碼符號nmap <C-_>g :cs find g <C-R>=expand("<cword>")<cr><cr> :cw<cr>  "查找本定義nmap <C-_>c :cs find c <C-R>=expand("<cword>")<cr><cr> :cw<cr>  "查找調(diào)用本函數(shù)的函數(shù)nmap <C-_>t :cs find t <C-R>=expand("<cword>")<cr><cr> :cw<cr>   "查找本字符串nmap <C-_>e :cs find e <C-R>=expand("<cword>")<cr><cr> :cw<cr>    "查找本egrep模式nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<cr><cr>  "查找本文件nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<cr><cr> :cw<cr>  "查找包含本文件的文件nmap <C-_>d :cs find d <C-R>=expand("<cword>")<cr><cr> :cw<cr>  " 查找本函數(shù)調(diào)用函數(shù)

使用:

1) 先生成cscope數(shù)據(jù)庫文件,如在/home/src/下,執(zhí)行 cscope -Rbq, 即可生成cscope.out文件

2)配置:然后可像上述配置一樣將cscope.out文件加載到vimrc中,也可手動加載,執(zhí)行: cs add cscope.out /home/src

3)快捷鍵: 將光標(biāo)移至函數(shù)名稱處,先按ctrl+下劃線,再快速按相應(yīng)字母即可實(shí)現(xiàn)相應(yīng)的查找功能。

4.8 其它插件

還有一些其它插件,根據(jù)需求來安裝,如markdown,python, emmet等,這些直接下載相應(yīng)文件到bundle目錄即可,markdown還需要一些配置,可參考附件vimrc文件

五、總結(jié)

終于總結(jié)完了,在用vim的過程中,遇到很多問題,雖然用了很久,但深知還有很多功能尚未用到,還有待挖掘,只能不斷學(xué)習(xí)總結(jié)。

六、附件

6.1 vimrc

call pathogen#infect()set expandtabset tabstop=4       " 設(shè)置tab鍵的寬度set softtabstop=4set shiftwidth=4set backspace=2     " 設(shè)置退格鍵可用set nu!             " 顯示行號set linebreak       " 整詞換行set whichwrap=b,s,<,>,[,]       " 光標(biāo)從行首和行末時可以跳到另一行去set autochdir                   " 自動設(shè)置目錄為正在編輯的文件所在的目錄set hidden          " 沒有保存的緩沖區(qū)可以自動被隱藏set scrolloff=5"--------------------------------------------------------------------------------" 查找/替換相關(guān)的設(shè)置"--------------------------------------------------------------------------------set hlsearch        " 高亮顯示搜索結(jié)果set incsearch       " 查詢時非常方便,如要查找book單詞,當(dāng)輸入到/b時,會自動找到                    " 第一個b開頭的單詞,當(dāng)輸入到/bo時,會自動找到第一個bo開頭的                    " 單詞,依次類推,進(jìn)行查找時,使用此設(shè)置會快速找到答案,當(dāng)你                    " 找要匹配的單詞時,別忘記回車set gdefault        " 替換時所有的行內(nèi)匹配都被替換,而不是只有第一個"--------------------------------------------------------------------------------" 狀態(tài)欄相關(guān)的設(shè)置"--------------------------------------------------------------------------------set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]set laststatus=2    " always show the status lineset ruler           " 在編輯過程中,在右下角顯示光標(biāo)位置的狀態(tài)行"--------------------------------------------------------------------------------" 編程相關(guān)的設(shè)置"--------------------------------------------------------------------------------set completeopt=longest,menu    " 關(guān)掉智能補(bǔ)全時的預(yù)覽窗口filetype plugin indent on       " 加了這句才可以用智能補(bǔ)全let OmniCpp_MayCompleteDot = 1 " autocomplete withlet OmniCpp_MayCompleteArrow = 1 " autocomplete with ->let OmniCpp_MayCompleteScope = 1 " autocomplete with ::let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included fileslet OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup windowlet OmniCpp_GlobalScopeSearch=1 " enable the global scope searchlet OmniCpp_DisplayMode=1 " Class scope completion mode: always show all memberslet OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last columnlet OmniCpp_ShowAccess=1let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]"set tags=./tags"set tags+=/usr/include/c++/tagsset tags+=/usr/local/cpp_src/cppsyn on              " 打開語法高亮set showmatch       " 設(shè)置匹配模式,類似當(dāng)輸入一個左括號時會匹配相應(yīng)的那個右括號set smartindent     " 智能對齊方式set shiftwidth=4    " 換行時行間交錯使用4個空格set autoindent      " 自動對齊set cindent         "設(shè)置C/C++縮進(jìn)方式"set ai!             " 設(shè)置自動縮進(jìn)colorscheme desert"--------------------------------------------------------------------------------" 代碼折疊"--------------------------------------------------------------------------------set foldmethod=syntaxset foldlevel=100       " Don't autofold anything (but I can still fold manually)"set foldopen-=search   " don't open folds when you search into them"set foldopen-=undo     " don't open folds when you undo stuff"set foldcolumn=4" 窗口操作的快捷鍵"--------------------------------------------------------------------------------"  垂直分割當(dāng)前窗口nmap wv     <C-w>v     " 關(guān)閉當(dāng)前窗口nmap wc     <C-w>c     " 水平分割當(dāng)前窗口nmap ws     <C-w>s     "###############################################################################" The following is the Plugins' setting"###############################################################################"--------------------------------------------------------------------------------" TagList :Tlist"--------------------------------------------------------------------------------let Tlist_Show_One_File=1let Tlist_Exit_OnlyWindow = 1"let Tlist_Use_Right_Window=1"--------------------------------------------------------------------------------" netrw 文件瀏覽器 :e <PATH>"--------------------------------------------------------------------------------"let g:netrw_winsize = 30       " 瀏覽器寬度"--------------------------------------------------------------------------------" QuickFix"--------------------------------------------------------------------------------" 切換到下一個結(jié)果nmap <F6> :cn<cr>   " 切換到上一個結(jié)果nmap <F7> :cp<cr>   "--------------------------------------------------------------------------------" WinManager :WMToggle"--------------------------------------------------------------------------------let g:winManagerWindowLayout='FileExplorer|TagList'"是nomal模式的命令,不是Ex模式的nmap wm :WMToggle<cr> "--------------------------------------------------------------------------------" MiniBufExp"--------------------------------------------------------------------------------let g:miniBufExplMapWindowNavArrows = 1let g:miniBufExplMapCTabSwitchBufs = 1"--------------------------------------------------------------------------------" cscope"--------------------------------------------------------------------------------cs add /home/src/cscope.out /home/src:set cscopequickfix=s-,c-,d-,i-,t-,e-:set cscopetag" 按下面這種組合鍵有技巧,按了<C-_>后要馬上按下一個鍵,否則屏幕一閃" 就回到nomal狀態(tài)了" <C-_>s的按法是先按"Ctrl+Shift+-",然后很快再按"s"nmap <C-_>s :cs find s <C-R>=expand("<cword>")<cr><cr> :cw<cr>nmap <C-_>g :cs find g <C-R>=expand("<cword>")<cr><cr> :cw<cr>nmap <C-_>c :cs find c <C-R>=expand("<cword>")<cr><cr> :cw<cr>nmap <C-_>t :cs find t <C-R>=expand("<cword>")<cr><cr> :cw<cr>nmap <C-_>e :cs find e <C-R>=expand("<cword>")<cr><cr> :cw<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> :cw<cr>nmap <C-_>d :cs find d <C-R>=expand("<cword>")<cr><cr> :cw<cr>"--------------------------------------------------------------------------------" Grep"--------------------------------------------------------------------------------"直接按下<F3>鍵來查找光標(biāo)所在的字符串nnoremap <silent> <F3> :Rgrep<CR>"--------------------------------------------------------------------------------" A"--------------------------------------------------------------------------------nnoremap <silent> <F12> :A<CR>" NERD_commenter"--------------------------------------------------------------------------------let NERD_c_alt_style = 1    " 將C語言的注釋符號改為//, 默認(rèn)是/**/"nmap <F5> ,cc"--------------------------------------------------------------------------------" SuperTab :SuperTabHelp"--------------------------------------------------------------------------------let g:SuperTabRetainCompletionType = 2let g:SuperTabDefaultCompletionType = "<C-X><C-O>""--------------------------------------------------------------------------------" CVim :help csupport"--------------------------------------------------------------------------------let g:C_Comments = "no"         " 用C++的注釋風(fēng)格let g:C_BraceOnNewLine = "no"   " '{'是否獨(dú)自一行l(wèi)et g:C_AuthorName = "Wen Qiuliang"let g:C_Project="F9"let g:C_TypeOfH = "c"           " *.h文件的文件類型是C還是C++let g:user_emmet_settings = {  /  'php' : {  /    'extends' : 'html',  /    'filters' : 'c',  /  },  /  'xml' : {  /    'extends' : 'html',  /  },  /  'haml' : {  /    'extends' : 'html',  /  },  /}" vim markdown configau BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} set filetype=mkdlet g:vim_markdown_folding_disabled=1let g:vim_markdown_frontmatter=1
View Code

6.2 插件

本文所涉及的所有插件都上傳在github中,地址如下:

https://git.oschina.net/ballwql/vim-plugin.git


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆城县| 余江县| 申扎县| 陕西省| 漾濞| 醴陵市| 松桃| 泉州市| 延川县| 临夏市| 南江县| 明星| 龙山县| 高青县| 南丰县| 绩溪县| 海门市| 奎屯市| 平武县| 张家界市| 冀州市| 洛川县| 绥中县| 庆云县| 甘泉县| 华坪县| 安塞县| 贵南县| 新竹市| 水城县| 五华县| 云浮市| 光山县| 百色市| 寿光市| 莱州市| 小金县| 潞西市| 枣强县| 云林县| 囊谦县|