1. 程式人生 > >CentOS下使用VIM打造C/C++開發環境

CentOS下使用VIM打造C/C++開發環境

ctags:生成tag檔案,這個是其他工具的基礎。

taglist:需要先裝ctags,高效地瀏覽原始碼, 其功能就像vc中的workpace, 那裡面列出了當前檔案中的所有巨集,全域性變數, 函式名等.
omnicppcomplete:需要先裝ctags,類似於VS智慧感知,需採用(Ctrl+X)+(Ctrl+O)組合鍵。

autocomplpop:先要裝omnicppcomplete,類似VS直接可以跳出相關函式,不需要組合鍵。

scope:cscope 比較強大,可以對函式以及部分型別定義進行跳轉,但有些BUG,好像在某些條件下無法正確找到分析列舉的定義。

globe:貌似和cscope,taglist功能一樣,據說對於大型的工程表現不錯(目前未介紹)。

ctags安裝,配置和使用:

直接使用yum install ctags就可以了。我現在裝的是ctags5.6版本。

配置:$HOME/.vimrc上增加

set tags=/home/yaqin/fbf/tags                                                                                                         
set tags+=./tags,tags,../tags,../../tags                    

使用:C/C++必須採用以下命令生成tags:

                          ctags -R --c++-kinds=+p --fields=+iaS --extra=+q

與scope結合起來用(C/C++):

ctags -n -f cppcomplete.tags --fields=+ai --C++-types=+p * -L cscope.files 如下為使用tag的方法:

1) 用命令列。在執行vim的時候加上"-t"引數,例如:
[/home/brimmer/src]$ vim -t foo_bar
這個命令將開啟定義"foo_bar"(變數或函式或其它)的檔案,並把游標定位到這一行。

2) 在vim編輯器內用":ta"命令,例如:
:ta foo_bar
3) 最方便的方法是把游標移到變數名或函式名上,然後按下"Ctrl-]"。用"Ctrl-o"退回原
來的地方。
注意:執行vim的時候,必須在"tags"檔案所在的目錄下執行。否則,執行vim的時候還要
用":set tags="命令設定"tags"檔案的路徑,這樣vim才能找到"tags"檔案。

在函式中移動游標
[{ 轉到上一個位於第一列的"{"
}] 轉到下一個位於第一列的"{"
{ 轉到上一個空行
} 轉到下一個空行 ([ and ] 也分別是兩個指令)
gd 轉到當前游標所指的區域性變數的定義
* 轉到當前游標所指的單詞下一次出現的地方
# 轉到當前游標所指的單詞上一次出現的地方

taglist安裝和配置:

下載後,把該檔案在~/.vim/目錄中解壓縮,這會在你的~/.vim/plugin~/.vim/doc目錄中各放入一個檔案:

plugin/taglist.vim – taglist外掛

doc/taglist.txt- taglist幫助檔案

windows使用者需要把這個外掛解壓在你的$VIM/vimfiles$HOME/vimfiles目錄。


使用下面的命令生成幫助標籤(下面的操作在VIM中進行):

:helptags ~/.vim/doc

生成幫助標籤後,你就可以用下面的命令檢視taglist的幫助了:

:help taglist.txt

Taglist提供了相當多的功能,我的vimrc中這樣配置:

   """"""""""""""""""""""""""""""
   " Tag list (ctags)
   """"""""""""""""""""""""""""""
   if MySys() == "windows"                "設定windows系統中ctags程式的位置
     let Tlist_Ctags_Cmd = 'ctags'
   elseif MySys() == "linux"              "設定windows系統中ctags程式的位置
     let Tlist_Ctags_Cmd = '/usr/bin/ctags'
   endif
   let Tlist_Show_One_File = 1            "不同時顯示多個檔案的tag,只顯示當前檔案的
   let Tlist_Exit_OnlyWindow = 1         "如果taglist視窗是最後一個視窗,則退出vim
   let Tlist_Use_Right_Window = 1         "在右側視窗中顯示taglist視窗

這樣配置後,當你輸入“:TlistOpen”時,顯示如下視窗:


在螢幕右側出現的就是taglist視窗,你從中可以看到在main.c檔案中定義的所有tag:巨集、定義、變數、函式等;你也可以雙擊某個tag,跳到該tag定義的位置;你還可以把某一類的tag摺疊起來(使用了VIM的折行功能),方便檢視,就像圖中macrovariable那樣。更多的功能,請檢視taglist的幫助頁,本文也會介紹一些常用功能。


下面介紹常用的taglist配置選項,你可以根據自己的習慣進行配置:

- Tlist_Ctags_Cmd選項用於指定你的Exuberant ctags程式的位置,如果它沒在你PATH變數所定義的路徑中,需要使用此選項設定一下;

- 如果你不想同時顯示多個檔案中的tag,設定Tlist_Show_One_File1。預設為顯示多個檔案中的tag

- 設定Tlist_Sort_Type”name”可以使taglisttag名字進行排序,預設是按tag在檔案中出現的順序進行排序。按tag出現的範圍(即所屬的namespaceclass)排序,已經加入taglistTODO List,但尚未支援;

- 如果你在想taglist視窗是最後一個視窗時退出VIM,設定Tlist_Exit_OnlyWindow為1;

- 如果你想taglist窗口出現在右側,設定Tlist_Use_Right_Window為1。預設顯示在左側。

- gvim中,如果你想顯示taglist選單,設定Tlist_Show_Menu為1。你可以使用Tlist_Max_Submenu_ItemsTlist_Max_Tag_Length來控制選單條目數和所顯示tag名字的長度;

- 預設情況下,在雙擊一個tag時,才會跳到該tag定義的位置,如果你想單擊tag就跳轉,設定Tlist_Use_SingleClick為1;

- 如果你想在啟動VIM後,自動開啟taglist視窗,設定Tlist_Auto_Open1

- 如果你希望在選擇了tag後自動關閉taglist視窗,設定Tlist_Close_On_Select1

- 當同時顯示多個檔案中的tag時,設定Tlist_File_Fold_Auto_Close為1,可使taglist只顯示當前檔案tag,其它檔案的tag都被摺疊起來。

- 在使用:TlistToggle開啟taglist視窗時,如果希望輸入焦點在taglist視窗中,設定Tlist_GainFocus_On_ToggleOpen1

- 如果希望taglist始終解析檔案中的tag,不管taglist視窗有沒有開啟,設定Tlist_Process_File_Always1

- Tlist_WinHeightTlist_WinWidth可以設定taglist視窗的高度和寬度。Tlist_Use_Horiz_Window為1設定taglist視窗橫向顯示;

taglist視窗中,可以使用下面的快捷鍵:

<CR>          跳到游標下tag所定義的位置,用滑鼠雙擊此tag功能也一樣
           在一個新開啟的視窗中顯示游標下tag
<Space>       顯示游標下tag的原型定義
u             更新taglist視窗中的tag
s             更改排序方式,在按名字排序和按出現順序排序間切換
x             taglist視窗放大和縮小,方便檢視較長的tag
+             開啟一個摺疊,同zo
-             將tag摺疊起來,同zc
*             開啟所有的摺疊,同zR
=             將所有tag摺疊起來,同zM
[[            跳到前一個檔案
]]            跳到後一個檔案
           關閉taglist視窗
<F1>          顯示幫助

可以用“:TlistOpen”開啟taglist視窗,用“:TlistClose”關閉taglist視窗。或者使用“:TlistToggle”在開啟和關閉間切換。在我的vimrc中定義了下面的對映,使用“,tl”鍵就可以開啟/關閉taglist視窗:

map <silent> <leader>tl :TlistToogle<cr>

Taglist外掛還提供了很多Ex命令,你甚至可以用這些命令建立一個taglist的會話,然後在下次進入VIM時載入此會話。

omnicppcomplete的安裝配置和使用:

從以上地址下載到壓縮包後,直接在$HOME/.vim的目錄下進行解壓。然後重新啟動VIM。

你可以繼續輸入:h omnicppcomplete來檢視外掛提供的文件,裡邊有安裝和使用的所用方法。

在你的vim配置檔案(~/.vimrc或者/etc/vimrc,沒有可以新新增一個)加上以下幾句:
set nocp
filetype plugin on
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
set completeopt=menu
set cindent

:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i

function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
else
return a:char
endif
endf


使用方法:

omnicppcomplete主要依賴ctags生成的tags檔案來判斷補全的,所以首先應該生成一定的資訊。也就是說應該先把類寫好,然後再生成tags,以後出現物件的 ”.” 或 ”->”成員操作時它自動尋找成員函式。

工程目錄 下用vim編輯檔案時按Ctrl+F12 ,ctags會把這個檔案所在目錄以及子目錄的所有檔案資訊收集生成一個名為tags的檔案存在當前編輯檔案所在目錄。然後就可以實現程式碼自動補全。 在~/.vimrc中新增的 map…… 那句巨集就實現這個功能。/*強烈建議不要使用這個:注意,如果要讓新編寫的檔案可以使用則需先寫入,命令為 :w */

autocomplpop的安裝,配置和使用:

下載的是一個zip檔案,解壓後會有三個資料夾,分別是autoload,doc,plugin。到Vim的根目錄下,找到名字和這三個一樣的資料夾。不同系統目錄位置不同。我的是/usr/share/vim/vim70,另外該外掛對VIM有版本方面的要求。VIM70最好使用外掛的2.8.1版本,過新或過舊的外掛都是無效的。

按照資料夾對應的把裡面的acp.vim和其他的什麼檔案都copy過去。然後重啟Vim。這時候應該會有錯誤提示,反正我的是有

Error detected while processing /home/carlos/.vim/plugin/acp.vim:
line 13:
***** L9 library must be installed! *****

這是外掛放出的一個錯誤提示,檢視plugin裡的acp.vim可以看到。是缺少L9 library庫。這個也是需要下載的。地址在下面

下載下來,它也是一個外掛形式,以同樣的方式copy到Vim目錄下。

安裝完後就可以了。

下面說一下個人的其他設定。正常autocomplpop是按字典進行補全的,只有你輸入過的單詞才可以補全。第一次想要自動補全必須用CTRL+X或CTRL+O來補全。下面的程式碼可以增強一下自動補全功能,複製到Vim的配置檔案vimrc裡

let g:AutoComplPop_Behavior = {
\ 'c': [ {'command' : "\<C-x>\<C-o>",
\ 'pattern' : ".",
\ 'repeat' : 0}
\ ]
\}

再就是這個外掛預設是沒有設定php自動補全的,為了能讓其輸入$後自動出來補全框。把下面的程式碼增加到vimrc中

if !exists('g:AutoComplPop_Behavior')
    let g:AutoComplPop_Behavior = {}
    let g:AutoComplPop_Behavior['php'] = []
    call add(g:AutoComplPop_Behavior['php'], {
            \   'command'   : "\<C-x>\<C-o>",
            \   'pattern'   : printf('\(->\|::\|\$\)\k\{%d,}$', 0),
            \   'repeat'    : 0,
            \})
endif

cscope安裝,配置和使用:

http://sourceforge.net/projects/cscope/files/
下載 Cscope 最新版 15.7a(cscope-15.7a.tar.bz2)直接編譯安裝
如果 make 時出現“curses.h not found”之類的錯誤,則需要先安裝“libncurses-dev”包
回到 ~ 目錄,輸入:
$ mkdir -p .vim/plugin
$ cd .vim/plugin
$ wget http://cscope.sourceforge.net/cscope_maps.vim  # 安裝 cscope_maps.vim 外掛
如果只希望 Cscope 關聯起所有的 .c 檔案,那麼可以直接到工程的根目錄下,輸入:
$ cscope -Rbq
-R 表示遞迴地把所有子資料夾中的 source file 也關聯進來
-b 表示只建立資料庫檔案 cscope.out,不進入 Cscope 的 GUI 介面
-q 會建立兩個額外的 'inverted index' file: cscope.in.out 和 cscope.po.out,以加快查詢的速度
如果不希望把 /usr/include 中被工程檔案包含的 .h 檔案關聯進來,就加 -k

如果要關聯其他型別的檔案(如 .cpp、.java等),就需要我們自己先生成一個 cscope.files,把所有我們希望關聯進去的檔案都列在裡面:
$ find /home/edelweiss/nbd/nbd-2.9.15/ -name '*.c' -o -name '*.cpp' -o -name '*.h' \
> /home/edelweiss/cscope.files
注意查詢的路徑一定要寫成絕對路徑,這樣才能保證寫入到 cscope.files 檔案中的也是絕對路徑。
之後就可以根據 cscope.files 建立資料庫了:
$ cscope -bq -i /home/edelweiss/cscope.files

如果生成資料庫檔案後,工程中的程式碼有所改動,最好重新生成一次那三個檔案,否則查詢結果可能與實際不匹配。

檢視程式碼時常用的快捷鍵是 Ctrl+\ s(按住 Ctrl 不放,同時按 \,然後全部鬆開,按 s)。將游標放到想要檢視所有出現位置的 C Symbol 上,按下上述快捷鍵,螢幕下方就會出現一個列表,輸入序號並回車就能到達想去的地方。按下 Ctrl+t 可回到搜尋前的位置。
直接在命令列查詢可輸入 “:cs f s symbol_name”
其他用法可以輸入 “:cs” 檢視或者參閱 manpage 和官網上的 Vim/Cscope Tutorial。

supertab的安裝配置和使用

下載網址: http://www.vim.org/scripts/script.php?script_id=1643
   軟體功能: 按TAB鍵實現自動補全
   安裝方法: [安裝]: 下載軟體包supertab.vba,用VIM開啟後,在Normal Mode下執行:":so %"即可實現自動安裝。
             [配置]:
             " 0 - 不記錄上次的補全方式
             " 1 - 記住上次的補全方式,直到用其他的補全命令改變它
             " 2 - 記住上次的補全方式,直到按ESC退出插入模式為止
             let g:SuperTabRetainCompletionType=2
             " 設定按下<Tab>後預設的補全方式, 預設是<C-P>, 
             " 現在改為<C-X><C-O>. 關於<C-P>的補全方式, 
             " 還有其他的補全方式, 你可以看看下面的一些幫助:
             " :help ins-completion
             " :help compl-omni
             let g:SuperTabDefaultCompletionType="<C-X><C-O>"           
    常用命令:
    注意事項:1)雖然有知名度,但補全的準確度仍不高,如果原始檔多,有時會造成按一下Tab鍵然後等著Vim在那狂搜的情況

cpp_src.tar.bz2的安裝和使用

        詳見:http://www.vim.org/scripts/script.php?script_id=2358
        命令:ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src
        .vimrc配置:set tags+=/my/path/to/tags/cpp

相關推薦

Deepin搭建C語言開發環境

首先開啟終端(快捷鍵Ctrl + Alt + T)輸入(此處應該善用tab鍵補全) sudo apt install build-essential 這條命令是安裝了了一些搭建C語言的一些東西列如gcc ,g++ ,gdb等。接下來我們安裝codebloc

WindowsC語言開發環境配置(一):MinGW的簡介和安裝

Windows下C語言開發環境配置(一):MinGW的安裝和eclipse的配置 1.什麼是MinGW? MinGW即Minimalist GNU for Windows,是一個簡單Windows本地應用的開發環境。MinGW包含有一組GNU編譯器的集合(包

windowsC語言開發環境搭建

有時候要開發一些耗時的演算法,需要用到c語言,所以講下c的環境搭建。 1、安裝MinGW,去官網下載,然後全自動安裝,然後在安裝介面勾選這幾個 最後apply changes,等待安裝結束。 2、在MinGW\msys\1.0下面有個msys.bat檔案,

ubuntu16.04LTSgedit的C語言開發環境簡單配置

   在這個編輯器下鼓搗了兩天終於把環境配置好了,現在不需要在終端裡敲命令就能編譯執行C語言了,真是非常的方便,編輯器還有很多外掛可以使用。 這個版本的編輯器有一點不方便的就是選單欄與編輯器分離,害我找了好久。。。。選單欄在螢幕最上方的黑條條裡,將滑鼠移過去就能發現了。  

Eclipse、Netbeans、Codeblocks C語言開發環境搭載/配置

個人比較喜歡Eclipse和Netbeans,但是在安裝Eclipse和Netbeans之前必須要先安裝java JDK以及環境變數的配置,如果選用Codeblocks工具,則免去了JDK的配置和安裝。 首先: 1.jdk環境配置 2.Eclipse、Netbeans

C++14系列(1):LinuxC++14開發環境配置

g++安裝 當前Ubuntu的LTS版本為14.04,直接在apt-get命令安裝的g++到不了5.0版本,不能獲得全部的c++14的支援,所以必須安裝5.0以上版本的g++,這裡的方法如下: sudo add-apt-repository ppa:ub

Ubuntu安裝C/C++開發環境【!!!有更新!!!Ubuntu14.10使用eclipse搭建C語言開發環境

(1)第一步安裝Eclipse,有兩種方法,使用軟體市場搜尋即可得到,安裝即可 第二種是使用終端安裝,命令如下: sudo su進入root模式 輸入密碼 然後 輸入:sudo apt-get install eclipse  開始安裝!  至此已經完全安裝eclipse

Linux安裝eclipse的C/C++整合開發環境

1.在Ubuntu軟體中心搜尋eclipse,並下載安裝。自動安裝一般沒有問題。或者 2.開啟終端,然後輸入(中間需要你輸入密碼):                                  

ubuntuvim配置成c++開發編輯器

全棧工程師開發手冊 (作者:欒鵬) 整體的vim的設定是在 /etc/vim/vimrc 檔案中。如果想設定所有使用者的配置,在裡面設定就可以了,配置和.vimrc是一樣的,在最後面新增下面2中的語句。 不建議修改/etc/vimrc 檔案,每個使用者可以

C#語言開發環境的搭建

c#學習筆記:C#語言應該讀作C Sharp。就是C形狀。更多的是用來開發圖形用戶界面程序的。學習C#語言更快的制作出可以使用的軟件來。但是如果使用C語言、C++語言,學習10年、20年也不一定能夠開發出有用的軟件來。因為C語言、C++語言是用來開發操作系統的底層的。C#語言的實現和Java非常的相似,都是使

Windows環境使用MinGW建立簡易C語言開發環境

命名 小型 c語言開發 簡易 系統設置 close ini 你會 tdi MinGW,是Minimalist GNUfor Windows的縮寫。我們用MinGW來搭建一個簡單的C語言開發環境。 一、安裝MinGW 首先去官網下載MinGW的安裝包:http://www.m

win10搭建c語言開發環境

win10搭建c語言開發環境 在window10上面用MingW搭建編寫C語言的環境 1、下載Mingw(下載頁面自行搜尋),開始安裝,安裝路徑自行選擇 2、點選‘continue’,出現如下圖, 3、稍微等待一會,出現如下圖介面:選擇4

無廢話--Mac OS, VS Code 搭建c/c++基本開發環境

無廢話,直接上步驟。 1) 安裝 xcode。 開啟App Store,搜尋xcode,進行下載安裝。 2)執行命令: xcode-select --install 安裝命令列工具。 3)安裝VS Code code.visualstudio.com/

傳智播客C/C 各種開發環境搭建視訊工具文件免費教程

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Zookeeper C API開發環境配置

Zookeeper C API庫分為單執行緒(zookeeper_st)和多執行緒庫(zookeeper_mt)兩種: 單執行緒庫(zookeeper_st):僅提供非同步API和回撥函式; 多執行緒庫(zookeeper_mt):支援同步API和非同步API以及回撥,包含

徐鬆亮軟體應用教學-基於Visual Studio Code的C語言開發環境搭建

工欲善其事,必先利其器。後續,本博主要帶領大家,會做多種資料演算法和資料結構的實現,比如說記憶體管理,排序,三次樣條,二叉樹,九宮格,蟻群演算法。。。這些主要用C語言來實現。雖然其他語言有現成的庫,但因為本人主要擅長的是做嵌入式產品開發,目前大多數嵌入式晶片資源仍然有

Zookeeper C API開發環境配置

Zookeeper C API庫分為單執行緒(zookeeper_st)和多執行緒庫(zookeeper_mt)兩種: 單執行緒庫(zookeeper_st):僅提供非同步API和回撥函式; 多執行緒庫(zookeeper_mt):支援同步API和非同步API

eclipse上配置c語言開發環境

關鍵詞:eclipse;window下;c/c++;MinGW編譯器;gdb除錯工具;cdt外掛;launch failed. binary not found;makefile;Eclipse IDE for C/C++ Developers 。。。         

傳智播客C/C++各種開發環境搭建視訊工具文件免費教程

(有圖有真相)C/C++各種開發環境搭建視訊工具文件免費教程目錄截圖如下:狠狠點選!C/C++各種開發環境搭建教程資料下載地址:http://pan.baidu.com/s/1kT2YvEB為滿足不同層次學員的需求,我們把環境搭建教程資料分為《基礎班必備環境》與《就業班必備環境》兩種。同學們可以根據自己實際情

VS2015配置C/C++-MySQL開發環境

【注意事項】 1。MySQL也可以是其他版本(其他版本下載地址:http://mirror.yandex.ru/mirrors/ftp.mysql.com/Downloads/),配置方法相同,但