VIM配置C++開發環境__C++

來源:互聯網
上載者:User

from:http://blog.csdn.net/klarclm/article/details/7932558


1. 安裝Vim和基本外掛程式

$sudo apt-get install vim vim-scripts


2. Vim設定檔

Vim系統設定檔在/usr/share/vim和/etc/vim下,我們不改系統配置,只改自己user home下的配置就行了。進入自己的home目錄,建立一個名為.vimrc的檔案,把如下配置拷貝到這個檔案中:

 " This line should not be removed as it ensures that various options are    " properly set to work with the Vim-related packages available in Debian.     debian.vim    " Uncomment the next line to make Vim more Vi-compatible    " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous    " options, so any other options should be set AFTER setting 'compatible'.    set nocompatible    " Vim5 and later versions support syntax highlighting. Uncommenting the    " following enables syntax highlighting by default.    if has("syntax")      syntax on            " 文法高亮    endif    colorscheme ron        " elflord ron peachpuff default 設定色彩配置,vim內建的色彩配置儲存在/usr/share/vim/vim72/colors目錄下    " detect file type    filetype on    filetype plugin on    " If using a dark background within the editing area and syntax highlighting    " turn on this option as well    set background=dark    " Uncomment the following to have Vim jump to the last position when    " reopening a file    if has("autocmd")      au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif      "have Vim load indentation rules and plugins according to the detected filetype      filetype plugin indent on    endif    " The following are commented out as they cause vim to behave a lot    " differently from regular Vi. They are highly recommended though.    "set ignorecase        " 搜尋模式裡忽略大小寫    "set smartcase        " 如果搜尋模式包含大寫字元,不使用 'ignorecase' 選項。只有在輸入搜尋模式並且開啟 'ignorecase' 選項時才會使用。    set autowrite        " 自動把內容寫迴文件: 如果檔案被修改過,在每個 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令時進行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令轉到別的檔案時亦然。    set autoindent        " 設定自動對齊(縮排):即每行的縮排值與上一行相等;使用 noautoindent 取消設定    "set smartindent        " 智能對齊    set tabstop=4        " 設定定位字元(tab鍵)的寬度    set softtabstop=4     " 設定軟定位字元的寬度        set shiftwidth=4    " (自動) 縮排使用的4個空格    set cindent            " 使用 C/C++ 語言的自動縮排方式    set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s     "設定C/C++語言的具體縮排方式    "set backspace=2    " 設定退格鍵可用    set showmatch        " 設定匹配模式,顯示匹配的括弧    set linebreak        " 整詞換行    set whichwrap=b,s,<,>,[,] " 游標從行首和行末時可以跳到另一行去    "set hidden " Hide buffers when they are abandoned    set mouse=a            " Enable mouse usage (all modes)    "使用滑鼠    set number            " Enable line number    "顯示行號    "set previewwindow    " 標識預覽視窗    set history=50        " set command history to 50    "記錄50條    "--狀態行設定--    set laststatus=2 " 總顯示最後一個視窗的狀態行;設為1則視窗數多於一個的時候顯示最後一個視窗的狀態行;0不顯示最後一個視窗的狀態行    set ruler            " 尺規,用於顯示光線標位置的行號和列號,逗號分隔。每個視窗都有自己的尺規。如果視窗有狀態行,尺規在那裡顯示。否則,它顯示在螢幕的最後一行上。    "--命令列設定--    set showcmd            " 命令列顯示輸入的命令    set showmode        " 命令列顯示vim當前模式    "--find setting--    set incsearch        " 輸入字串就顯示匹配點    set hlsearch        

3. ctags

安裝:$sudo apt-get install ctags

安裝好後在源碼根目錄下運行$ctags -R,產生tags索引檔案。

VI中ctags的基本用法如下:

Ctrl + ] : 跳轉到游標所在標籤的定義位置

Ctrl + O : 返回上一個標籤

Ctrl + T : 前進一個標籤

Ctrl + W + ] : 開啟一個新的view,view的位置為之前標籤的定義位置


4. 管理Vim外掛程式 --- vim-addons

安裝: $sudo apt-get install vim-addon-manager

查看當前外掛程式情況:$vim-addons status

我們在自己的home目錄下建立外掛程式子目錄,用於安裝vim外掛程式:

$cd ~

$mkdir .vim

$cd .vim

$mkdir plugin

$mkdir doc

建立好這些目錄後,使用如下命令安裝相應外掛程式

$vim-addons install [plugin]


5. 自動補全 -- OmniCppComplete

Vim自動補全可通過外掛程式 OmniCppComplete實現

安裝:$vim-addons install omnicppcomplete

配置OmniCppComplete, 在vim設定檔~/.vimrc 中加入如下配置:

    "-- omnicppcomplete setting --    " 按下F3自動補全代碼,注意該映射語句後不能有其他字元,包括tab;否則按下F3會自動補全一些亂碼    imap <F3> <C-X><C-O>    " 按下F2根據標頭檔內關鍵字補全    imap <F2> <C-X><C-I>    set completeopt=menu,menuone " 關掉智能補全時的預覽視窗    let OmniCpp_MayCompleteDot = 1 " autocomplete with .    let 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 files    let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window    let OmniCpp_GlobalScopeSearch=1 " enable the global scope search    let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members    "let OmniCpp_DefaultNamespaces=["std"]    let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column    let OmniCpp_ShowAccess=1 

在VIM中,使用如下命令可以添加tags

:set tags+=/usr/include/tags

協助文檔

:help omnicppcomplete


6. 提示函數原型echofunc

echofunc可以在命令列中提示當前輸入的函數原型

下載地址:http://www.vim.org/scripts/script.php?script_id=1735

下載後把echofunc.vim放到~/.vim/plugin下,重啟vi

在vi中鍵入函數名後,輸入"("就會在命令列中出現提示,如果函數有多個原型,按"Alt + -" 和 "Alt + ="向前和向後翻

echofunc需要tags檔案支援,並且在建立tags檔案時要加選項“--fields=+IS": $ctags -R --fields=+IS


7. 標籤瀏覽器Taglist

安裝:$vim-addons install taglist

配置taglist

在vim設定檔~/.vimrc中加入如下配置:

"-- Taglist setting --    let Tlist_Ctags_Cmd='ctags' "因為我們放在環境變數裡,所以可以直接執行    let Tlist_Use_Right_Window=1 "讓視窗顯示在右邊,0的話就是顯示在左邊    let Tlist_Show_One_File=0 "讓taglist可以同時展示多個檔案的函數列表    let Tlist_File_Fold_Auto_Close=1 "非當前檔案,函數列表摺疊隱藏    let Tlist_Exit_OnlyWindow=1 "當taglist是最後一個分割視窗時,自動推出vim    "是否一直處理tags.1:處理;0:不處理    let Tlist_Process_File_Always=1 "即時更新tags    let Tlist_Inc_Winwidth=0

開啟VIM後輸入命令":Tlist"開啟/關閉taglist視窗

協助文檔

:help taglist


8. 檔案瀏覽和緩衝區管理器WinManager

安裝:$vim-addons install winmanager

配置WinManager,在設定檔~/.vimrc中加入:

"-- WinManager setting --    let g:winManagerWindowLayout='FileExplorer|TagList' " 設定我們要管理的外掛程式    "let g:persistentBehaviour=0 " 如果所有編輯檔案都關閉了,退出vim    nmap wm :WMToggle<cr> 

在VIM 中使用命令 :WMToggle 開啟/關閉WinManager,因為我們在設定檔中做了映射,直接使用 :vm 就可以開啟/關閉了

<enter>或者雙擊進入目錄或開啟檔案

<tab>進入目錄,或者在新視窗中開啟檔案

<F5>重新整理列表

- 返回上一層

協助 : help WinManager


9. buffer管理器MiniBufferExplorer

在VIM中開啟多個檔案後,可以使用MiniBufferExplorer對他們進行管理

安裝:$vim-addons install minibufexplorer

配置:在~/vimrc中加入如下配置:

" -- MiniBufferExplorer --    let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切換到當前視窗的上下左右視窗    let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭頭,可以切換到當前視窗的上下左右視窗    let g:miniBufExplMapCTabSwitchBufs = 1 " 啟用以下兩個功能:Ctrl+tab移到下一個buffer並在當前視窗開啟;Ctrl+Shift+tab移到上一個buffer並在當前視窗開啟;ubuntu好像不支援    "let g:miniBufExplMapCTabSwitchWindows = 1 " 啟用以下兩個功能:Ctrl+tab移到下一個視窗;Ctrl+Shift+tab移到上一個視窗;ubuntu好像不支援    let g:miniBufExplModSelTarget = 1    " 不要在不可編輯內容的視窗(如TagList視窗)中開啟選中的buffer

常用命令:

<Tab> 移到上一個buffer

<Shift-Tab> 移到下一個buffer

<Enter> 開啟游標所在buffer

d 刪除游標所在buffer


10. 程式碼摺疊功能fold

在vim設定檔 ~/.vimrc中加入如下配置:

"--fold setting--    set foldmethod=syntax " 用文法高亮來定義摺疊    set foldlevel=100 " 啟動vim時不要自動摺疊代碼    set foldcolumn=5 " 設定摺疊欄寬度
常用命令:

za 開啟/關閉游標下的摺疊

zA 迴圈開啟/關閉游標下的摺疊

zo 開啟游標下的摺疊

zO 迴圈開啟游標下的所有摺疊

zc 關閉游標下的摺疊

zC 迴圈關閉游標下的所有摺疊

zM 關閉所有摺疊

zR 開啟所有摺疊

協助 :help fold


11. 項目分類樹管理器Project

Project用於顯示項目的分類樹,分類樹預設儲存在 ~/.vimprojects檔案中

安裝:$vim-addons install project

Project分類樹產生:

a. 開啟vim,鍵入命令 :Project,左邊出現project框

b. 命令模式下輸入\C,出現建立Project的資訊,填入這些資訊就可以了


12. quickfix命令集

通過quickfix命令集,可以在vim內編譯器,如果有錯誤可以直接跳到錯誤位置修改,然後重新編譯,加快開發速度

在設定檔中加入如下配置:

 "-- QuickFix setting --    " 按下F6,執行make clean    map <F6> :make clean<CR><CR><CR>    " 按下F7,執行make編譯器,並開啟quickfix視窗,顯示編譯資訊    map <F7> :make<CR><CR><CR> :copen<CR><CR>    " 按下F8,游標移到上一個錯誤所在的行    map <F8> :cp<CR>    " 按下F9,游標移到下一個錯誤所在的行    map <F9> :cn<CR>    " 以上的映射是使上面的快速鍵在插入模式下也能用    imap <F6> <ESC>:make clean<CR><CR><CR>    imap <F7> <ESC>:make<CR><CR><CR> :copen<CR><CR>    imap <F8> <ESC>:cp<CR>    imap <F9> <ESC>:cn<CR>

常用命令

:make {arguments}

如果出差按<Enter>回到vim介面,鍵入如下命令開啟quickfix視窗

:cw[indow]

雙擊某條出差資訊,就會自動跳到相應出差位置

: cn[ext] 下一條錯誤位置

:cp[revious] 上一條錯誤位置

:cfirst 第一處錯誤

:clast 最後一處錯誤

:cc 詳細資料

: cl[ist] 錯誤資訊概覽

協助 : help quickfix


13. Cscope

Cscope是一個類似ctags的工具,不過功能更加強大

安裝:$sudo apt-get install cscope

在設定檔~/.vimrc中加入配置:

"-- Cscope setting --    if has("cscope")        set csprg=/usr/bin/cscope        " 指定用來執行cscope的命令        set csto=0                        " 設定cstag命令尋找次序:0先找cscope資料庫再找標籤檔案;1先找標籤檔案再找cscope資料庫        set cst                            " 同時搜尋cscope資料庫和標籤檔案        set cscopequickfix=s-,c-,d-,i-,t-,e-    " 使用QuickFix視窗來顯示cscope尋找結果        set nocsverb        if filereadable("cscope.out")    " 若目前的目錄下存在cscope資料庫,添加該資料庫到vim            cs add cscope.out        elseif $CSCOPE_DB != ""            " 否則只要環境變數CSCOPE_DB不為空白,則添加其指定的資料庫到vim            cs add $CSCOPE_DB        endif        set csverb    endif    map <F4> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>    imap <F4> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>    " 將:cs find c等Cscope尋找命令映射為<C-_>c等快速鍵(按法是先按Ctrl+Shift+-, 然後很快再按下c)    nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>    nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>    nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>    nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>    nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>    nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<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> :copen<CR><CR>

建立cscope庫:

$cscope -Rbq

將cscope庫添加到vim:開啟某個檔案,鍵入命令 :cs add cscope.out,


cscope的主要功能是通過 find 子命令來實現的,通過如下命令使用

:cs find c|d|e|f|g|i|s|t name

0/s 尋找這個符號

1/g 尋找這個定義

2/d 尋找這個函數調用的函數

3/c 尋找調用過這個函數的函數

4/t 尋找這個字串

6/e 尋找這個egrep模式

7/f 尋找這個檔案

8/i 尋找包含這個檔案的檔案


協助 :help if_cscop


14. 編程相關常用快速鍵

% 跳轉到配對的括弧

[[ 跳轉到當前或者上一代碼塊(函數定義、類定義)開頭

][ 跳轉到當前代碼塊結尾

]] 跳轉到下一代碼塊開頭

[/ 跳轉到注釋開頭 (對/* */有效)

]/ 跳轉到注釋結尾(對/* */有效)

gD 跳轉到當前檔案內標識符首次出現的位置,可用於跳轉到變數的定義處

gd 跳轉到當前函數內標識符首次出現的位置,可用於跳轉到局部變數的定義處

'' 跳轉到游標上次所在位置,兩個'


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.