vim實用外掛
Windows下的IDE有一些有用的功能,比如sourceinsight裡shift-F8高亮符號,ctrl-m檢視書籤,codeblocks裡F11切換原始檔和標頭檔案,快捷的程式碼補全,原始檔symbol視窗,這裡安裝一些外掛來使vim實現這些功能,這些外掛直接拷貝到.vim/plugin目錄就行了。
符號高亮
<Leader>m 標記或取消游標所在符號的高亮標記
<Leader>n 如果游標所在處的符號已高亮,清除當前詞的高亮,否則清除所有符號的高亮
標記加強
在設定了一個標記後,它就會在你的vim視窗中顯示出標記的名字並高亮該行。
配置:
""""""""""""""""""""""""""""""
" showmarks setting
""""""""""""""""""""""""""""""
" Enable ShowMarks
let showmarks_enable = 1
" Show which marks
let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
" Hilight lower & upper marks
let showmarks_hlline_lower = 1
let showmarks_hlline_upper = 1
" Ignore help, quickfix, non-modifiable buffers
let showmarks_ignore_type = "hqm"
首先,使能showmarks外掛,然後定義showmarks只顯示全部的大寫和小寫標記,並高亮這兩種標記,對檔案型別為help、quickfix和不可修改的緩衝區,則不顯示標記的位置。
ShowMarks已經定義了一些快捷鍵:
<Leader>mt - 開啟/關閉ShowMarks外掛
<Leader>mo - 強制開啟ShowMarks外掛
<Leader>mh - 清除當前行的標記
<Leader >ma - 清除當前緩衝區中所有的標記
<Leader>mm - 在當前行打一個標記,使用下一個可用的標記名
用:MarksBrowser
命令開啟瀏覽視窗,回車前往某個標記,按d鍵刪除標記。
如果要保持標記瀏覽視窗持續開啟,在vimrc中新增:
let marksCloseWhenSelected = 0
""""""""""""""""""""""""""""""
" markbrowser setting
""""""""""""""""""""""""""""""
nmap <silent> <leader>mk :MarksBrowser<cr>
標頭檔案跳轉
:A 原始檔標頭檔案切換
:AS 上下分割視窗後切換
:AV 垂直分割視窗後切換
:AT 新建標籤後切換
將游標所在處單詞作為檔名開啟
:IH 切換至游標所在檔案
:IHS 分割視窗後切換至游標所在檔案
:IHV 垂直分割視窗後切換
:IHT 新建標籤後切換
symbol視窗
taglist.vim : Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)
http://www.vim.org/scripts/script.php?script_id=273
下載zip檔案並解壓,將taglist.vim放入plugin目錄,taglist.txt放入doc目錄,進入doc目錄,在vim中執行:helptags
命令新增幫助檔案。
let Tlist_Show_One_File = 1 "不同時顯示多個檔案的tag,只顯示當前檔案的
let Tlist_Exit_OnlyWindow = 1 "如果taglist視窗是最後一個視窗,則退出vim
let Tlist_Use_Right_Window = 1 "在右側視窗中顯示taglist視窗,預設如此
在Vim命令列下執行:TlistToggle
命令就可以開啟Taglist視窗,再次執行:TlistToggle
則關閉。
設定Tlist_Sort_Type為”name”可以使taglist以tag名字進行排序,預設是按tag在檔案中出現的順序進行排序。
如果想在啟動VIM後,自動開啟taglist視窗,設定Tlist_Auto_Open為1。
如果希望在選擇了tag後自動關閉taglist視窗,設定Tlist_Close_On_Select為1。
在使用:TlistToggle
開啟taglist視窗時,如果希望輸入焦點在taglist視窗中,設定Tlist_GainFocus_On_ToggleOpen為1.
Tlist_WinHeight和Tlist_WinWidth可以設定taglist視窗的高度和寬度。Tlist_Use_Horiz_Window為1設定taglist視窗橫向顯示。
tag視窗中支援以下命令:
<CR> 跳到游標下tag所定義的位置
p 預覽tag定義,但不跳轉
o 在一個新開啟的視窗中顯示游標下tag
<Space> 顯示游標下tag的原型定義
u 更新taglist視窗中的tag
s 更改排序方式,在按名字排序和按出現順序排序間切換
x taglist視窗放大和縮小,方便檢視較長的tag
+ 開啟一個摺疊,同zo
- 將tag摺疊起來,同zc
* 開啟所有的摺疊,同zR
= 將所有tag摺疊起來,同zM
q 關閉taglist視窗
<F1> 顯示幫助
SuperTab
SuperTab使用很簡單,只要在輸入變數名或路徑名等符號中途按Tab鍵,就能得到以前輸入過的符號列表,並通過Tab鍵迴圈選擇。
關於補全方式參見:help ins-completion
ctrl-n和ctrl-p 關鍵字補全
ctrl-x,ctrl-] 根據tag補全
在你的~/.vimrc檔案中加上這兩句:
let g:SuperTabDefaultCompletionType="<C-X><C-]>"
" 設定按下<Tab>後預設的補全方式, 預設是<C-P>
let g:SuperTabRetainCompletionType=2
" 0 - 不記錄上次的補全方式
" 1 - 記住上次的補全方式,直到用其他的補全命令改變它
" 2 - 記住上次的補全方式,直到按ESC退出插入模式為止
我的設定
公司用的vim版本是6.3,上面的外掛只有marks browser只支援vim 7。
關於這幾個外掛我的配置是:
" ShowMarks
let showmarks_enable = 0
let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
nmap <Leader>md <Leader>mh
" alternate headfile
map <silent> <F11> :A<CR>
" Taglist
let Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
nmap TT :TlistToggle<CR>
" markset
map <F8> <Plug>MarkSet
ShowMarks如果啟用,啟動vim時過一段時間才會高亮書籤,所以預設給它關了,感覺用md刪除一個書籤更合理點;
用F11快捷鍵來切換標頭檔案,TT來開啟taglist視窗;
因為有了ShowMarks的快捷鍵,markset的<Leader>m
會有一個延遲時間,所以直接用F8來高亮。