一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

將Vim改造為強(qiáng)大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有圖有真相)

 android之情殤 2013-08-09

將Vim改造為強(qiáng)大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有圖有真相)

復(fù)制代碼
1、安裝Vim和Vim基本插件
首先安裝好Vim和Vim的基本插件。這些使用apt-get安裝即可:
lingd@ubuntu:~/arm$sudo apt-get install vim vim-scripts vim-doc
其中vim-scripts是vim的一些基本插件,包括語法高亮的支持、縮進(jìn)等等。
vim中文幫助文檔tar包下載地址:
http://sourceforge.net/projects/vimcdoc/files/vimcdoc/
解壓后其中有個(gè)doc文件夾, 將其中的內(nèi)容全部復(fù)制到~/.vim/doc, 或者vim安裝目錄下的doc目錄中, 此時(shí)vim中的help信息已經(jīng)是中文的了.
網(wǎng)頁版中文幫助文檔網(wǎng)址http://vimcdoc.sourceforge.net/doc/help.html
首頁就時(shí)vim幫助文檔的目錄,閱讀起來更方便有效、更有針對(duì)性!
 
2、Vim配置文件
Vim強(qiáng)大的功能,其來源基本上就兩個(gè)地方:Vim插件以及Vim配置文件。
Vim本身的系統(tǒng)配置文件夾是在/usr/share/vim/和/etc/vim/兩個(gè)文件夾下。一般情況下,我們不會(huì)去改變這兩個(gè)文件夾下的配置文件,而是在用戶文件夾/home/user(其中,user為用戶名,我的用戶名是lingd)下建立自己的配置文件。進(jìn)入用戶文件夾(/home/user/)之后,用gedit新建一個(gè)名叫.vimrc的文件:
lingd@ubuntu:~/arm$ cd ~
lingd@ubuntu:~$ gedit .vimrc
注:使用gedit主要是為了方便大段大段的文字粘貼!
然后把下面的文字拷貝進(jìn)這個(gè)文件之后保存:

" 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 設(shè)置配色方案,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' 選項(xiàng)。只有在輸入搜索模式并且打開 'ignorecase' 選項(xiàng)時(shí)才會(huì)使用。
set autowrite " 自動(dòng)把內(nèi)容寫回文件: 如果文件被修改過,在每個(gè) :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令時(shí)進(jìn)行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令轉(zhuǎn)到別的文件時(shí)亦然。
set autoindent " 設(shè)置自動(dòng)對(duì)齊(縮進(jìn)):即每行的縮進(jìn)值與上一行相等;使用 noautoindent 取消設(shè)置
"set smartindent " 智能對(duì)齊方式
set tabstop=4 " 設(shè)置制表符(tab鍵)的寬度
set softtabstop=4 " 設(shè)置軟制表符的寬度
set shiftwidth=4 " (自動(dòng)) 縮進(jìn)使用的4個(gè)空格
set cindent " 使用 C/C   語言的自動(dòng)縮進(jìn)方式
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s "設(shè)置C/C  語言的具體縮進(jìn)方式
"set backspace=2 " 設(shè)置退格鍵可用
set showmatch " 設(shè)置匹配模式,顯示匹配的括號(hào)
set linebreak " 整詞換行
set whichwrap=b,s,<,>,[,] " 光標(biāo)從行首和行末時(shí)可以跳到另一行去
"set hidden " Hide buffers when they are abandoned
set mouse=a " Enable mouse usage (all modes) "使用鼠標(biāo)
set number " Enable line number "顯示行號(hào)
"set previewwindow " 標(biāo)識(shí)預(yù)覽窗口
set history=50 " set command history to 50 "歷史記錄50條


"--狀態(tài)行設(shè)置--
set laststatus=2 " 總顯示最后一個(gè)窗口的狀態(tài)行;設(shè)為1則窗口數(shù)多于一個(gè)的時(shí)候顯示最后一個(gè)窗口的狀態(tài)行;0不顯示最后一個(gè)窗口的狀態(tài)行
set ruler " 標(biāo)尺,用于顯示光標(biāo)位置的行號(hào)和列號(hào),逗號(hào)分隔。每個(gè)窗口都有自己的標(biāo)尺。如果窗口有狀態(tài)行,標(biāo)尺在那里顯示。否則,它顯示在屏幕的最后一行上。

"--命令行設(shè)置--
set showcmd " 命令行顯示輸入的命令
set showmode " 命令行顯示vim當(dāng)前模式

"--find setting--
set incsearch " 輸入字符串就顯示匹配點(diǎn)
set hlsearch

注:配置文件中,以單個(gè)雙引號(hào)開頭的文字為注釋。
保存文件之后,啟動(dòng)Vim。此時(shí),Vim已經(jīng)是這種效果了(語法高亮挺漂亮的–這個(gè)是由vim-scripts中的插件支持的):

3、ctags安裝與配置
ctags可以建立源碼樹的標(biāo)簽索引(標(biāo)簽就是一個(gè)標(biāo)識(shí)符被定義的地方,如函數(shù)定義),使程序員在編程時(shí)能迅速定位函數(shù)、變量、宏定義等位置去查看原形
以下是在ubuntu下ctags的下載安裝和配置過程:
下載并安裝ctags,終端輸入命令
lingd@ubuntu:~/arm$ sudo apt-get install ctags
建立源碼索引,比如我經(jīng)常需要查閱Linux的內(nèi)核代碼,而這些代碼放在/home/lingd/arm/linux-2.6.24.7目錄下
那么在終端進(jìn)入到該目錄后,輸入命令ctags -R *,你會(huì)發(fā)現(xiàn)多了一個(gè)tags文件,這個(gè)就是索引文件
lingd@ubuntu:~/arm$ cd linux-2.6.24.7
lingd@ubuntu:~/arm/linux-2.6.24.7$ ls
arch     crypto         include  kernel       mm              samples   usr
block    Documentation  init     lib          net             scripts
COPYING  drivers        ipc      MAINTAINERS  README          security
CREDITS  fs             Kbuild   Makefile     REPORTING-BUGS  sound
lingd@ubuntu:~/arm/linux-2.6.24.7$ ctags -R *
lingd@ubuntu:~/arm/linux-2.6.24.7$ ls
arch     crypto         include  kernel       mm              samples   tags
block    Documentation  init     lib          net             scripts   usr
COPYING  drivers        ipc      MAINTAINERS  README          security
CREDITS  fs             Kbuild   Makefile     REPORTING-BUGS  sound
向vim注冊(cè)索引文件tags的路徑,
lingd@ubuntu:~/arm/linux-2.6.24.7$ vi ~/.vimrc
在打開文件的最后添加如下內(nèi)容(當(dāng)然,具體路徑根據(jù)你自己的情況)

"--ctags setting--
" 按下F5重新生成tag文件,并更新taglist
map <F5> :!ctags -R --c  -kinds= p --fields= iaS --extra= q .<CR><CR> :TlistUpdate<CR>
imap <F5> <ESC>:!ctags -R --c  -kinds= p --fields= iaS --extra= q .<CR><CR> :TlistUpdate<CR>
set tags=tags
set tags =./tags "add current directory's generated tags file
set tags =~/arm/linux-2.6.24.7/tags "add new tags file(剛剛生成tags的路徑,在ctags -R 生成tags文件后,不要將tags移動(dòng)到別的目錄,否則ctrl ]時(shí),會(huì)提示找不到源碼文件)

set tags =./tags表示在當(dāng)前工作目錄下搜索tags文件
set tags =~/arm/linux-2.6.24.7/tags表示在搜尋tags文件的時(shí)候,也要搜尋~/arm/linux-2.6.24.7/文件夾下的tags文件。
然后保存并退出vi。這樣,你就可以用vim在任意地方查看有關(guān)Linux的函數(shù)原形
------------------------------------
tag命令用法:
Ctrl+]  跳到當(dāng)前光標(biāo)下單詞的標(biāo)簽
Ctrl+O  返回上一個(gè)標(biāo)簽
Ctrl+T  返回上一個(gè)標(biāo)簽
:tag TagName 跳到TagName標(biāo)簽
以上命令是在當(dāng)前窗口顯示標(biāo)簽,當(dāng)前窗口的文件替代為包標(biāo)簽的文件,當(dāng)前窗口光標(biāo)跳到標(biāo)簽位置。如果不希望在當(dāng)前窗口顯示標(biāo)簽,可以使用以下命令:
:stag TagName 新窗口顯示TagName標(biāo)簽,光標(biāo)跳到標(biāo)簽處
Ctrl+W   ]  新窗口顯示當(dāng)前光標(biāo)下單詞的標(biāo)簽,光標(biāo)跳到標(biāo)簽處
當(dāng)一個(gè)標(biāo)簽有多個(gè)匹配項(xiàng)時(shí)(函數(shù) (或類中的方法) 被多次定義),":tags" 命令會(huì)跳轉(zhuǎn)到第一處。如果在當(dāng)前文件中存在匹配,那它將會(huì)被首先使用。
可以用這些命令在各匹配的標(biāo)簽間移動(dòng):
:tfirst    到第一個(gè)匹配
:[count]tprevious 向前 [count] 個(gè)匹配
:[count]tnext  向后 [count] 個(gè)匹配
:tlast    到最后一個(gè)匹配
或者使用以下命令選擇要跳轉(zhuǎn)到哪一個(gè)
:tselect TagName
輸入以上命令后,vim會(huì)為你展示一個(gè)選擇列表。然后你可以輸入要跳轉(zhuǎn)到的匹配代號(hào) (在第一列)。其它列的信息可以讓你知道標(biāo)簽在何處被定義過。
以下命令將在預(yù)覽窗口顯示標(biāo)簽
:ptag TagName 預(yù)覽窗口顯示TagName標(biāo)簽,光標(biāo)跳到標(biāo)簽處
Ctrl+W   }  預(yù)覽窗口顯示當(dāng)前光標(biāo)下單詞的標(biāo)簽,光標(biāo)跳到標(biāo)簽處
:pclose   關(guān)閉預(yù)覽窗口
:pedit file.h 在預(yù)覽窗口中編輯文件file.h(在編輯頭文件時(shí)很有用)
:psearch atoi 查找當(dāng)前文件和任何包含文件中的單詞并在預(yù)覽窗口中顯示匹配,在使用沒有標(biāo)簽文件的庫函數(shù)時(shí)十分有用。
 
最簡(jiǎn)單的使用方法舉例
用vi在任意目錄寫一個(gè)Test.c文件,內(nèi)容如下:

int main(void)
{
printf("Hello World!\n");
return 0;
}

寫好后末行模式輸入w保存好(不要退出vi),按Esc回到指令模式,把光標(biāo)停留在printf上
然后按 Ctrl+W   ],vi會(huì)自動(dòng)跳到Linux系統(tǒng)函數(shù)printf()處,這時(shí)我們能查看printf()的原形
查看完了,按Ctrl+o(回到上一個(gè)標(biāo)簽) 就回到原來的地方
復(fù)制代碼

 

復(fù)制代碼
4、管理vim插件——vim-addons
通過vim-addons,我們可以管理vim插件。我們?cè)趕udo apt-get install vim vim-scripts vim-doc時(shí),一般會(huì)自動(dòng)安裝上vim-addons。若未安裝可通過sudo apt-get install vim-addon-manager手動(dòng)安裝。安裝完成后,就可以用vim-addons管理vim插件了。
# 系統(tǒng)中已有的vim-scripts中包含的插件及其狀態(tài):
lingd@ubuntu:~$ vim-addons status
# Name                     User Status  System Status
align                       removed       removed     
alternate                   removed       removed     
bufexplorer                 removed       removed     
calendar                    removed       removed     
closetag                    removed       removed     
colors sampler pack         removed       removed     
cvsmenu                     removed       removed     
debPlugin                   removed       removed     
detectindent                removed       removed     
doxygen-toolkit             removed       removed     
editexisting                removed       removed     
enhanced-commentify         removed       removed     
gnupg                       removed       removed     
info                        removed       removed     
justify                     removed       removed     
lbdbq                       removed       removed     
markdown-syntax             removed       removed     
matchit                     removed       removed     
minibufexplorer             installed     removed     
nerd-commenter              removed       removed     
omnicppcomplete             installed     removed     
po                          removed       removed     
project                     installed     removed     
python-indent               removed       removed     
secure-modelines            removed       removed     
snippetsEmu                 removed       removed     
sokoban                     removed       removed     
supertab                    removed       removed     
surround                    removed       removed     
taglist                     installed     removed     
tetris                      removed       removed     
utl                         removed       removed     
vcscommand                  removed       removed     
vimplate                    removed       removed     
whatdomain                  removed       removed     
winmanager                  removed       removed     
xmledit                     removed       removed   
上面我們介紹了如何獨(dú)立于系統(tǒng)配置文件之外,建立自己的Vim配置文件。當(dāng)我們自己下載安裝Vim插件的時(shí)候,也可以另外建立目錄,放置我們自己的插件。這個(gè)目錄一般為/home/user/.vim,另外還需要建立一個(gè)插件子目錄,一個(gè)插件文檔子目錄,以上的可以進(jìn)入/home/user目錄下通過下面的命令執(zhí)行:
lingd@ubuntu:~$ mkdir .vim
lingd@ubuntu:~$ cd .vim
lingd@ubuntu:~/.vim$ mkdir plugin
lingd@ubuntu:~/.vim$ mkdir doc
# vim官方插件的安裝,xxxx是要安裝的插件名,以status中顯示的名稱為準(zhǔn)。安裝插件xxxx時(shí)使用以下命令(前提是在目錄/home/user/.vim/下建立好了plugin和doc兩個(gè)文件夾)
vim-addons install xxxx
 關(guān)于vim-addons命令的詳細(xì)用法,可以通過“man vim-addons”查看其幫助文檔

5、vim自動(dòng)補(bǔ)全——OmniCppComplete
vim的自動(dòng)補(bǔ)全功能可通過其插件OmniCppComplete實(shí)現(xiàn)。
安裝OmniCppComplete
lingd@ubuntu:~$ vim-addons install omnicppcomplete
配置OmniCppComplete
在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- omnicppcomplete setting --
" 按下F3自動(dòng)補(bǔ)全代碼,注意該映射語句后不能有其他字符,包括tab;否則按下F3會(huì)自動(dòng)補(bǔ)全一些亂碼
imap <F3> <C-X><C-O>
" 按下F2根據(jù)頭文件內(nèi)關(guān)鍵字補(bǔ)全
imap <F2> <C-X><C-I>
set completeopt=menu,menuone " 關(guān)掉智能補(bǔ)全時(shí)的預(yù)覽窗口
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

(前幾行就是提供了C  中的./->/::等操作符的提示和自動(dòng)完成)。
OmniCppComplete是基于ctags數(shù)據(jù)庫即tags文件實(shí)現(xiàn)的(基于ctags生成的索引信息來實(shí)現(xiàn)自動(dòng)補(bǔ)全的),所以在ctags -R生成tags時(shí)還需要一些額外的選項(xiàng),這樣生成的tags文件才能與OmniCppComplete配合運(yùn)作。使用下列命令生成tags文件,就可以與OmniCppComplete配合運(yùn)作:
ctags -R --c  -kinds= p --fields= iaS --extra= q .
--c  -kinds= p  : 為C  文件增加函數(shù)原型的標(biāo)簽
--fields= iaS   : 在標(biāo)簽文件中加入繼承信息(i)、類成員的訪問控制信息(a)、以及函數(shù)的指紋(S)
--extra= q      : 為標(biāo)簽增加類修飾符。注意,如果沒有此選項(xiàng),將不能對(duì)類成員補(bǔ)全
# vim自動(dòng)補(bǔ)全功能的測(cè)試
# 為了測(cè)試自動(dòng)補(bǔ)全功能,我們先下載C  一份C  標(biāo)準(zhǔn)庫的源代碼。
lingd@ubuntu:~$ sudo apt-get install build-essential
# 然后在/usr/include/c  下就可以找到標(biāo)準(zhǔn)庫的頭文件了。
lingd@ubuntu:~$ cd /usr/include/c  
lingd@ubuntu:/usr/include/c  $ ls
4.4  4.4.3
# 在此文件夾下生成能與OmniCppComplete配合運(yùn)作的tags文件
lingd@ubuntu:/usr/include/c  $ ctags -R --c  -kinds= p --fields= iaS --extra= q .
lingd@ubuntu:/usr/include/c  $ ls
4.4  4.4.3  tags
# 在vim的配置文件中如下內(nèi)容,然后在編程的時(shí)候就可以使用自動(dòng)補(bǔ)全功能了。
lingd@ubuntu:/usr/include/c  $ vi ~/.vimrc

set tags =/usr/include/c  /tags

# 用vi打開前面的Test.c文件,在printf("Hello World!\n")下一行中,輸入pri,然后按下Ctrl X Ctrl O,此時(shí)vi會(huì)彈出一個(gè)窗口,所有以pri開頭的tag都會(huì)出現(xiàn)在這個(gè)窗口中,printf就出現(xiàn)在第6行中
lingd@ubuntu:~$ cd ~
lingd@ubuntu:~$ vim Test.c
復(fù)制代碼

復(fù)制代碼
注意:在自動(dòng)補(bǔ)全的點(diǎn),Vim必須知道可能補(bǔ)全的定義。比如說,在namespace std命名空間下的變量和函數(shù),必須要用using namespace std;暴露出來,否則是不能補(bǔ)全的。在.cpp文件中還可以,在.h文件中這樣就不是好的做法了。暫時(shí)不知道這個(gè)問題是由于我自己配置錯(cuò)誤還是程序沒有實(shí)現(xiàn)。
當(dāng)自動(dòng)補(bǔ)全下拉窗口彈出后,一些可用的快捷鍵:
Ctrl P  向前切換成員
Ctrl N  向后切換成員
Ctrl E  表示退出下拉窗口, 并退回到原來錄入的文字
Ctrl Y  表示退出下拉窗口, 并接受當(dāng)前選項(xiàng)
其他補(bǔ)全方式:
Ctrl X Ctrl L 整行補(bǔ)全
Ctrl X Ctrl N  根據(jù)當(dāng)前文件里關(guān)鍵字補(bǔ)全
Ctrl X Ctrl K  根據(jù)字典補(bǔ)全
Ctrl X Ctrl T  根據(jù)同義詞字典補(bǔ)全
Ctrl X Ctrl I  根據(jù)頭文件內(nèi)關(guān)鍵字補(bǔ)全
Ctrl X Ctrl ]  根據(jù)標(biāo)簽補(bǔ)全
Ctrl X Ctrl F  補(bǔ)全文件名
Ctrl X Ctrl D  補(bǔ)全宏定義
Ctrl X Ctrl V  補(bǔ)全vim命令
Ctrl X Ctrl U  用戶自定義補(bǔ)全方式
Ctrl X Ctrl S  拼寫建議
幫助文檔
:help omnicppcomplete
 
6、提示函數(shù)原型echofunc
echofunc可以在命令行中提示當(dāng)前輸入函數(shù)的原型。
echofunc下載地址:http://www.vim.org/scripts/script.php?script_id=1735
下載完成后,把echofunc.vim文件放到 ~/.vim/plugin文件夾中
當(dāng)你在vim插入(insert)模式下緊接著函數(shù)名后輸入一個(gè)"("的時(shí)候, 這個(gè)函數(shù)的聲明就會(huì)自動(dòng)顯示在命令行中。如果這個(gè)函數(shù)有多個(gè)聲明, 則可以通過按鍵"Alt -""Alt ="向前和向后翻頁, 這個(gè)兩個(gè)鍵可以通過設(shè)置g:EchoFuncKeyNext和g:EchoFuncKeyPrev參數(shù)來修改。這個(gè)插件需要tags文件的支持, 并且在創(chuàng)建tags文件的時(shí)候要加選項(xiàng)"--fields= lS"(OmniCppComplete創(chuàng)建的tag文件也能用), 整個(gè)創(chuàng)建tags文件的命令如下:
$ ctags -R --fields= lS
其他插件說明詳見echofunc.vim
復(fù)制代碼

復(fù)制代碼
 如果你在編譯vim時(shí)加上了" balloon_eval"特性,那么當(dāng)你把鼠標(biāo)放在函數(shù)名上的時(shí)候會(huì)有一個(gè)tip窗口彈出, 該窗口中也會(huì)有函數(shù)的聲明

7、標(biāo)簽瀏覽器Taglist
Taglist用于列出了當(dāng)前文件中的所有標(biāo)簽(宏, 全局變量, 函數(shù)名等)
安裝Taglist
lingd@ubuntu:~$ vim-addons install taglist
配置Taglist
在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- Taglist setting --
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ù)列表
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=1 "實(shí)時(shí)更新tags
let Tlist_Inc_Winwidth=0

進(jìn)入vim后用命令":Tlist"打開/關(guān)閉taglist窗口
幫助文檔
:help taglist.txt
復(fù)制代碼

 

復(fù)制代碼
 8、文件瀏覽器和緩沖區(qū)管理器WinManager
WinManager用于管理文件瀏覽器和緩沖區(qū)(buffer)。2.0以上版本的WinManager還可以管理其他IDE類型插件,不過要用戶在插件中增加一些輔助變量和hook來支持WinManager(幫助文檔有相關(guān)說明)。
Taglist插件本身就提供了對(duì)WinManager的支持,不需要我們?nèi)バ薷乃?。這里,我們就用WinManager來管理文件瀏覽器netrw和標(biāo)簽瀏覽器Taglist。netrw是標(biāo)準(zhǔn)的vim插件, 已經(jīng)隨vim一起安裝進(jìn)系統(tǒng)里了, 不需要我們自行下載安裝。
安裝WinManager
lingd@ubuntu:~$ vim-addons install winmanager
配置WinManager
在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- WinManager setting --
let g:winManagerWindowLayout='FileExplorer|TagList' " 設(shè)置我們要管理的插件
"let g:persistentBehaviour=0 " 如果所有編輯文件都關(guān)閉了,退出vim
nmap wm :WMToggle<cr>

常用命令
:WMToggle 打開/關(guān)閉WinManage,不過我們?cè)谂渲梦募?vimrc中做了快捷鍵映射,所以直接按wm就可以打開/關(guān)閉WinManage
文件瀏覽器命令(在文件瀏覽器窗口中使用)
<enter>或雙擊  如果光標(biāo)下是目錄, 則進(jìn)入該目錄; 如果光標(biāo)下文件, 則打開該文件
<tab>   如果光標(biāo)下是目錄, 則進(jìn)入該目錄; 如果光標(biāo)下文件, 則在新窗口打開該文件
<F5> 刷新列表
-  返回上一層目錄
c  使瀏覽目錄成為vim當(dāng)前工作目錄
d  創(chuàng)建目錄
D  刪除當(dāng)前光標(biāo)下的目錄或文件
i  切換顯示方式
R  文件或目錄重命名
s  選擇排序方式
r  反向排序列表
x  定制瀏覽方式, 使用你指定的程序打開該文件
winmanager幫助文檔
:help winmanager
netrw幫助文檔
:help netrw
復(fù)制代碼

復(fù)制代碼
9、buffer管理器MiniBufferExplorer
MiniBufferExplorer用于瀏覽和管理buffer,如果只打開一個(gè)文件,是不會(huì)顯示在屏幕上的,而打開多個(gè)文件之后,會(huì)自動(dòng)出現(xiàn)在屏幕上。vim也有自帶的buffer管理工具,不過只有:ls, :bnext, :bdelete 等的命令, 既不好用, 又不直觀.
關(guān)于vim緩沖區(qū)(buffer)和窗口的概念(詳見:help windows)
"緩沖區(qū)" 是一塊內(nèi)存區(qū)域,里面存儲(chǔ)著正在編輯的文件。如果沒有把緩沖區(qū)里的文件存盤,那么原始文件不會(huì)被更改。
"窗口" 被用來查看緩沖區(qū)里的內(nèi)容。你可以用多個(gè)窗口觀察同一個(gè)緩沖區(qū),也可以用多個(gè)窗口觀察不同的緩沖區(qū)。
"屏幕" Vim 所用的整個(gè)工作區(qū)域,可以是一個(gè)終端模擬窗口,也被叫做 "Vim 窗口"。一個(gè)屏幕包含一個(gè)或多個(gè)窗口,被狀態(tài)行和屏幕底部的命令行分割。
         ------------------------------- 
屏幕    | 窗口 1        | 窗口 2        |
        |               |               |
        |               |               |
        |=== 狀態(tài)行  ===|==== 狀態(tài)行 ===|
        | 窗口 3                        |
        |                               |
        |                               |
        |========== 狀態(tài)行 =============|
        |命令行                         |
         ------------------------------- 
安裝MiniBufferExplorer
lingd@ubuntu:~$ vim-addons install minibufexplorer
配置MiniBufferExplorer
在vim配置文件/home/user/.vimrc中加入如下的配置:

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

常用命令
<Tab>  移到上一個(gè)buffer
<Shift-Tab> 移到下一個(gè)buffer
<Enter>  打開光標(biāo)所在的buffer
d   刪除光標(biāo)所在的buffer
復(fù)制代碼

復(fù)制代碼
 10、代碼折疊fold
折疊用于把緩沖區(qū)內(nèi)某一范圍內(nèi)的文本行顯示為屏幕上的一行。就像一張紙,要它縮短
些,可以把它折疊起來:
  ------------------------ 
 | 行 1                   |
 | 行 2                   |
 | 行 3                   |
 |_______________________ |
 \                          \________________________  / 被折疊的行             /
 /________________________/
 | 行 12                  |
 | 行 13                  |
 | 行 14                  |
  ------------------------ 
那些文本仍然在緩沖區(qū)內(nèi)而沒有改變。受到折疊影響的只是文本行顯示的方式。
折疊的好處是,通過把多行的一節(jié)折疊成帶有折疊提示的一行,會(huì)使你更好地了解對(duì)文本
的宏觀結(jié)構(gòu)。
折疊方式foldmethod
vim提供以下6種方法來選定折疊方式:
manual 手工定義折疊
indent 更多的縮進(jìn)表示更高級(jí)別的折疊
expr 用表達(dá)式來定義折疊
syntax 用語法高亮來定義折疊
diff 對(duì)沒有更改的文本進(jìn)行折疊
marker 對(duì)文中的標(biāo)志折疊
折疊級(jí)別foldlevel
'foldlevel' 是個(gè)數(shù)值選項(xiàng):數(shù)字越大則打開的折疊更多。
當(dāng) 'foldlevel'0 時(shí),所有的折疊關(guān)閉。
當(dāng) 'foldlevel' 為正數(shù)時(shí),一些折疊關(guān)閉。
當(dāng) 'foldlevel' 很大時(shí),所有的折疊打開。
折疊欄foldcolumn
'foldcolumn' 是個(gè)數(shù)字,它設(shè)定了在窗口的邊上表示折疊的欄的寬度。當(dāng)為0時(shí),沒有折疊欄。最大是12。
一個(gè)打開的折疊由一欄來表示,頂端是 '-',其下方是 '|'。這欄在折疊結(jié)束的地方結(jié)束。當(dāng)折疊嵌套時(shí),嵌套的折疊出現(xiàn)在被包含的折疊右方一個(gè)字符位置。
一個(gè)關(guān)閉的折疊由 ' ' 表示。
當(dāng)折疊欄太窄而不能顯示所有折疊時(shí),顯示一數(shù)字來表示嵌套的級(jí)別。
在折疊欄點(diǎn)擊鼠標(biāo),可以打開和關(guān)閉折疊:
- 點(diǎn)擊 ' ' 打開在這行的關(guān)閉折疊
- 在任何其他非空字符上點(diǎn)擊,關(guān)閉這行上的打開折疊
在vim配置文件/home/user/.vimrc中加入如下的配置:

"--fold setting--
set foldmethod=syntax " 用語法高亮來定義折疊
set foldlevel=100 " 啟動(dòng)vim時(shí)不要自動(dòng)折疊代碼
set foldcolumn=5 " 設(shè)置折疊欄寬度

常用命令
za  打開/關(guān)閉在光標(biāo)下的折疊
zA  循環(huán)地打開/關(guān)閉光標(biāo)下的折疊
zo  打開 (open) 在光標(biāo)下的折疊
zO  循環(huán)打開 (Open) 光標(biāo)下的折疊
zc  關(guān)閉 (close) 在光標(biāo)下的折疊
zC  循環(huán)關(guān)閉 (Close) 在光標(biāo)下的所有折疊
zM  關(guān)閉所有折疊
zR  打開所有的折疊
幫助文檔
:help usr_28.txt
:help fold.txt
復(fù)制代碼

復(fù)制代碼
11、項(xiàng)目目錄數(shù)管理器Project
Project插件是用來顯示項(xiàng)目的目錄樹的,這個(gè)目錄樹是默認(rèn)保存在~/.vimprojects文件中。
安裝Project
lingd@ubuntu:~$ vim-addons install project
Project目錄樹可以通過下面的步驟生成:
1) 打開vim在命令模式下輸入 :Project,在屏幕的最左邊就會(huì)出現(xiàn)一個(gè)project框。不過因?yàn)闆]有初始化暫時(shí)是空的
2)在命令模式下(不是插入模式)輸入\C (大寫的C),會(huì)出現(xiàn)下面這些信息:
Enter the Name of the Entry: xxxx (輸入項(xiàng)目名稱)
Enter the Absolute Directory to Load: /xxx/xxx/xxx (輸入項(xiàng)目根目錄的絕對(duì)路徑)
Enter the CD parameter: . (“.”為當(dāng)前目錄)或者和項(xiàng)目根目錄一致
Enter the File Filter: *.* (符合條件的源文件,可以是*.cpp/*.h等)
PS:項(xiàng)目目錄可以嵌套。而且更改之后在~/.vimprojects文件中就能看到內(nèi)容,你可以手動(dòng)進(jìn)行更改。
 
12、quickfix命令集
通過quickfix命令集,你可在 Vim 內(nèi)編譯程序并直接跳轉(zhuǎn)到出錯(cuò)位置進(jìn)行修正。你可以接著重新編譯并做修正,直到不再出錯(cuò)為止。
在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- QuickFix setting --
" 按下F6,執(zhí)行make clean
map <F6> :make clean<CR><CR><CR>
" 按下F7,執(zhí)行make編譯程序,并打開quickfix窗口,顯示編譯信息
map <F7> :make<CR><CR><CR> :copen<CR><CR>
" 按下F8,光標(biāo)移到上一個(gè)錯(cuò)誤所在的行
map <F8> :cp<CR>
" 按下F9,光標(biāo)移到下一個(gè)錯(cuò)誤所在的行
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>

幫助文檔
:help usr_30
:help quickfix
下面的命令運(yùn)行 "make" (包括你所給出的參數(shù)) 程序并捕捉其運(yùn)行結(jié)果: >
 :make {arguments}
如果編譯時(shí)出現(xiàn)錯(cuò)誤,按 <Enter>,回到vim界面,看不到出錯(cuò)信息了!這時(shí),可以運(yùn)行以下命令
:cw[indow]
打開quickfix窗口來查看出錯(cuò)信息,它會(huì)自動(dòng)跳到第一處出錯(cuò)的地方。然后,你可以雙擊出錯(cuò)某一條出錯(cuò)信息,vim就會(huì)自動(dòng)跳轉(zhuǎn)到相應(yīng)的出錯(cuò)位置
:cn[ext]  光標(biāo)移到下一個(gè)錯(cuò)誤所在的行
:cp[revious] 光標(biāo)移到上一個(gè)錯(cuò)誤所在的行
:cfirst  到第一處錯(cuò)誤
:clast  到最后一處錯(cuò)誤
:cc   空間不夠時(shí),Vim 會(huì)縮短出錯(cuò)信息。如果你想查看詳細(xì)信息,可以使用此命令
:cl[ist] 列出所有出錯(cuò)信息的概覽(只有那些含有文件名或行數(shù)的錯(cuò)誤信息會(huì)被顯示,需要查看那些并不含文件名或行數(shù)的信息可用“:cl[ist]!”命令)
復(fù)制代碼

復(fù)制代碼
13、Cscope
Cscope是一個(gè)類似于ctags的工具,不過其功能比ctags強(qiáng)大很多。
安裝Cscope
lingd@ubuntu:~$ sudo apt-get install cscope
在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- Cscope setting --
if has("cscope")
set csprg=/usr/bin/cscope " 指定用來執(zhí)行cscope的命令
set csto=0 " 設(shè)置cstag命令查找次序:0先找cscope數(shù)據(jù)庫再找標(biāo)簽文件;1先找標(biāo)簽文件再找cscope數(shù)據(jù)庫
set cst " 同時(shí)搜索cscope數(shù)據(jù)庫和標(biāo)簽文件
set cscopequickfix=s-,c-,d-,i-,t-,e- " 使用QuickFix窗口來顯示cscope查找結(jié)果
set nocsverb
if filereadable("cscope.out") " 若當(dāng)前目錄下存在cscope數(shù)據(jù)庫,添加該數(shù)據(jù)庫到vim
cs add cscope.out
elseif $CSCOPE_DB != "" " 否則只要環(huán)境變量CSCOPE_DB不為空,則添加其指定的數(shù)據(jù)庫到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的主要功能是通過其"find"子命令來實(shí)現(xiàn)的
"cscope find"的用法:
cs find c|d|e|f|g|i|s|t name
0 或 s  查找這個(gè) C 符號(hào)(可以跳過注釋)
1 或 g  查找這個(gè)定義
2 或 d  查找這個(gè)函數(shù)調(diào)用的函數(shù)
3 或 c  查找調(diào)用過這個(gè)函數(shù)的函數(shù)
4 或 t  查找這個(gè)字符串
6 或 e  查找這個(gè) egrep 模式
7 或 f  查找這個(gè)文件
8 或 i  查找包含這個(gè)文件的文件
用法:
<1>、為源碼建立一個(gè)cscope數(shù)據(jù)庫
lingd@ubuntu:~/arm/linux-2.6.28.7$ cscope -Rbq
lingd@ubuntu:~/arm/linux-2.6.28.7$ ls cscope.*
cscope.in.out  cscope.out  cscope.po.out
<2>、用vim打開某個(gè)源碼文件,末行模式下,輸入“:cs add cscope.out"(該命令已被我們映射為快捷鍵F4),添加cscope數(shù)據(jù)庫到vim。因?yàn)槲覀円褜im配置為啟動(dòng)時(shí),自動(dòng)添加當(dāng)前目錄下的cscope數(shù)據(jù)庫,所以你再添加該cscope數(shù)據(jù)庫時(shí),vim會(huì)提示“重復(fù)cscope數(shù)據(jù)庫 未被加入“
<3>、完成前兩步后,現(xiàn)在就可以用“cs find c”等Cscope查找命令查找關(guān)鍵字了。我們已在.vimrc中將“cs find c”等Cscope查找命令映射為<C-_>c等快捷鍵(按法是先按Ctrl Shift -, 然后很快按下c)
 
幫助文檔
:help if_cscop
注意:幫助文檔if_cscop中,快捷鍵映射nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>是有誤的!
比如光標(biāo)“header.h”上按下<C-_>i,也就是查找包含“header.h“的文件。但是按照這個(gè)映射規(guī)則,則是將<C-_>i映射為cs find i ^header.h$,也就是查找包含“^header.h$“的文件,這顯然不是我們想要的結(jié)果。該映射規(guī)則應(yīng)該改成nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>
復(fù)制代碼

14、vim常用快捷鍵
%  跳轉(zhuǎn)到配對(duì)的括號(hào)去
[[  跳轉(zhuǎn)到當(dāng)前或者上一代碼塊(函數(shù)定義、類定義等)的開頭去(但要求代碼塊中'{'必須單獨(dú)占一行)
][  跳轉(zhuǎn)到當(dāng)前代碼塊(函數(shù)定義、類定義等)的結(jié)尾去(但要求代碼塊中'{'必須單獨(dú)占一行)
]]  跳轉(zhuǎn)到下一代碼塊(函數(shù)定義、類定義等)的開頭去(但要求代碼塊中'{'必須單獨(dú)占一行)
[/  跳到注釋開頭(只對(duì)/* */注釋有效)
]/ 跳到注釋結(jié)尾(只對(duì)/* */注釋有效)
gD  跳轉(zhuǎn)到當(dāng)前文件內(nèi)標(biāo)識(shí)符首次出現(xiàn)的位置,可用于跳轉(zhuǎn)到全部變量的定義處;查找局部變量時(shí),要是多個(gè)函數(shù)中定義了該局部變量,使用gD進(jìn)行查找,找到的變量定義可能不是你需要的
gd 跳轉(zhuǎn)到當(dāng)前函數(shù)內(nèi)標(biāo)識(shí)符首次出現(xiàn)的位置,可用于跳轉(zhuǎn)到局部變量的定義處
''  跳轉(zhuǎn)到光標(biāo)上次停靠的地方, 是兩個(gè)', 而不是一個(gè)"
mx  設(shè)置書簽,x只能是a-z的26個(gè)字母
`x  跳轉(zhuǎn)到書簽處("`"是1左邊的鍵)
>  增加縮進(jìn),"x>"表示增加以下x行的縮進(jìn)
<  減少縮進(jìn),"x<"表示減少以下x行的縮進(jìn)

 

http://blog.csdn.net/yangyang_gnu/article/details/6642271

 

vim插件在文件中下載:

Vim_Plugin.zip  插件
vim.zip           vim 配置

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日韩精品综合在线| 国产精品午夜福利免费阅读 | 激情少妇一区二区三区| 国产一区一一一区麻豆| 成人午夜激情在线免费观看| 国产a天堂一区二区专区| 国产成人亚洲精品青草天美| 欧美不卡一区二区在线视频| 免费精品一区二区三区| 久久精品伊人一区二区| 欧美日韩一区二区三区色拉拉| 男人大臿蕉香蕉大视频| 亚洲欧美国产网爆精品| 欧美区一区二区在线观看| 国产高清视频一区不卡| 精品久久少妇激情视频| 国产一级特黄在线观看| 久久精品亚洲精品一区| 久久99这里只精品热在线| 日韩人妻中文字幕精品| 久久精品国产亚洲熟女| 国产免费人成视频尤物| 国产欧美一区二区色综合| 草草夜色精品国产噜噜竹菊| 亚洲欧美日本国产不卡| 国产亚洲午夜高清国产拍精品| 欧美黑人暴力猛交精品| 91精品视频全国免费| 日韩成人h视频在线观看| 99精品国产自在现线观看| 熟女高潮一区二区三区| 亚洲一级二级三级精品| 国语久精品在视频在线观看| 久久老熟女一区二区三区福利| 国产午夜福利一区二区| 欧美中文字幕日韩精品| 99香蕉精品视频国产版| 激情丁香激情五月婷婷| 欧美精品一区二区水蜜桃| 丰满少妇高潮一区二区| 国产午夜福利在线免费观看|