Gvim和Vim使用說明
將壓縮包解壓到/home/hostname/下,其中包括.vimrc、.gvimrc文件和.vim文件夾,覆蓋已有的;接著安裝ctags和cscope,命令:
sudoapt-get install exuberant-ctags
sudoapt-get install cscope
(在.gvimrc和.vimrc中)定義自己的快捷命令方式;在vim普通模式下直接敲所需命令
"常用簡寫命令 !後面一定要有空格
nmapcd :cd
nmapls :! ls
注意:在vim普通模式下鍵入“:ls”是查看同時打開所有文件的文件列表,不同於 “:!ls”
nmapgcc :! gcc
nmapgl :! gcc -lGL -lGLU -lglut
nmapw :w
nmapwq :wq
nmapmk :! mkdir
nmaptch :! touch
nmapcp :! cp
nmaprm :! rm
nmapmake :! make
查找函數,變量定義:ctags(功能沒有cscope強大)
要生成tags文件:在你要查看的源碼“根目錄”,執行
ctags-R --c++-kinds=+px --fields=+iaS –extra=+q
或者直接按“Ctrl+F12”快捷鍵,生成tags文件,文件大小和本項目的源代碼總大小差不多;
使用:
案件“Ctrl+]”跳轉到函數或者變量定義,按“Ctrl+t”,跳轉回上一級,類似於棧操作
注意:如果找到的不是你想要的函數(有同名函數的原因),鍵入“:ts”查看找到的所有同名函數,選中自己想要的函數查看 ts<==>tagslist
在.vim/sourceCode中相應的文件夾中也要生成tags,以便你要查找的函數不再你的項目中時使用,比如所標准的C庫和C++庫或者Java庫;
然後在.vimrc中加入命令:
settags=tags
settags+=./tags,../tags,./*/tags
settags+=/home/hostname/.vim/sourceCode/glibc-2.16.0/tags
settags+=/home/hostname/.vim/sourceCode/stdcpp_for_ctags/tags
第一行是在打開的源文件的當前目錄下查找tags文件;
第二行是在父目錄或者更高級父母路中查找tags文件;
三四行是加載特定的目錄下(你所需要的函數庫中)的tags文件;
依照上面的方法,構造你需要的函數庫
按F2打開和關閉“文件浏覽器”和“成員變量和(成員)函數浏覽器”
查找函數,變量定義:cscope
按F5鍵生成cscope.files、cscope.in.out、cscope.out、cscope.po.out
同時也生成tags
快捷鍵使用:(按Ctrl+\組合鍵後,松開快速按另一個字母,可以在配置文件中更改快捷鍵,注意沖突情況)
Ctrl+\s:查找C語言符號,即查找函數名、宏、枚舉值等出現的地方
Ctrl+\g:查找函數、宏、枚舉等定義的位置,類似ctags所提供的功能
Ctrl+\d:查找本函數調用的函數
Ctrl+\c:查找調用本函數的函數
Ctrl+\t:查找指定的字符串
Ctrl+\e:查找egrep模式,相當於egrep功能,但查找速度快多了
Ctrl+\f:查找並打開文件,類似vim的find功能
Ctrl+\i:查找包含本文件的文
向回跳還是按“Ctrl+]”
搜索的結果將顯示在QuickFix中,按F3鍵可以直接調出QuickFix窗口
配置文件中已經實現了,從子目錄向父目錄中搜索cscope.out,實現自動加載cscope.out文件
按F4或者F6實現多文件標簽的切換,按F4是向左切換,按F6是向右切換
F7實現grep功能,有ctags和cscope後,grep基本用不上
按Ctrl+Up、Ctrl+Down、Ctrl+Left、Ctrl+Right(Ctrl+箭頭鍵)切換光標所在窗口buffer的位置,相當於Ctrl+w+w,不過,更好用
F9鍵是一鍵編譯,Ctrl是編譯並運行;只對簡單項目有效,建議不使用,自己寫Makefile
實現{},[],'',””的自動補全功能,不若不想使用,可以去掉.gvimrc和.vimrc中的“{}[] '' ""等自動補全”配置塊
OmniCppComplete
(類成員或命名空間的補全功能:->、.、::號後的提示功能該功能是在tags文件基礎上實現的)
注意:在編寫完某一個類的頭文件時,一定要重新生成tags文件(相當大的項目謹慎使用,浪費時間),以用來實現該功能
多文件欄的管理
"minibufexpl.vim的使用
:bn打開當前buffer的下一個buffer
:bp打開當前buffer的前一個buffer
:ls當前打開的buf
:e<filename>打開文件
:b<tab>自動補齊
:bd刪除buf
d光標停在buffer欄上;刪除光標所在的buffer
:bnum打開指定的buffer,num指的是buffer開始的那個數字,比如,我想打開buffer值為7的文件,輸入:b7就ok了
設快捷鍵:
nmapvim :e在vim下每次只能新打開一個文件,不能打開多個文件,gvim下可以
nmapbd :bd
F10鍵是注釋光標所在行,F11是取消注釋(光標所在行)
“空格”,用來實現某個塊的折疊和打開,包括{}、/**/等
snippets插件的使用(快速插入常用結構)
具體語言在~/.vim/snippets/目錄下,打開相應語言的文件,查看常用的結構,以便使用:
結構特點:注意使用方法
#For Loop
snippetfor
for(${1:i} = 0; $1 < ${2:count}; $1${3:++}) {
${4:/*code */}
}
#If Condition
snippetif
if(${1:/* condition */}) {
${2:/*code */}
}
snippetef
elseif (${1:/* condition */}) {
${2:/*code */}
}
snippetel
else{
${1}
}
以上為例:
for循環:鍵入:for再接著按Tab鍵,程序就會插入for代碼塊
for(i = 0; i < count; i++) {
/*code */
}
對應原始結構:按tab鍵跳轉{}對應的塊,順序是數字順序
for(${1:i} = 0; $1 < ${2:count}; $1${3:++}) {
${4:/*code */}
}
if結構:鍵入:if再接著按Tab鍵,程序就會插入if代碼塊
if(/* condition */) {
/*code */
}
鍵入:ef再接著按Tab鍵,程序就會插入elseif代碼塊
elseif (/* condition */) {
/*code */
}
鍵入:el再接著按Tab鍵,程序就會插入else代碼塊
else{
}
其他結構要查看~/.vim/snippets/目錄下的文件內容
15.函數參數列表的提示和補全功能的實現;code_complete.vim的使用
使用也是根據tags文件實現的,
比如:ITutorial類中含有成員函數聲明:
boolframeRenderingQueued(const Ogre::FrameEvent &evt);
用途1:函數定義時
寫完頭文件時要重新生成tags文件,然後在實現文件中
boolframeRenderingQueued(
停留在“(”括號處,
(在vim插入模式下)按“Ctrl+]”,顯示該函數的補全參數列表的列表,如果有多個,選擇你想要的那個;
用途2:函數調用時
(在vim插入模式下)按“Ctrl+j”,顯示該函數的提示參數列表的列表,如果有多個,選擇你想要的那個;注意區別
再按一次“Ctrl+j”,光標會跳轉到:
根據提示鍵入參數,如果有多個參數,則填入一個參數後,再按“Ctrl+j”,跳到另一個地方,以此類推;知道填完參數為止