引用文章A:http://learnvimscriptthehardway.onefloweroneworld.com/php
引用介紹:初學者建議通讀一遍。對VIM能有總體性的瞭解。c++
引用文章B:http://blog.csdn.net/wooin/article/details/1858917git
引用介紹:文章自己很好。但把我坑了兩天。無它,此博文補全功能不支持C++。但建議瀏覽,由於能夠從總體上知曉如何配置IDE。github
引用文章C:http://easwy.com/blog/archives/advanced-vim-skills-omin-complete/comment-page-1/vim
引用介紹:經過此文完成C++補全功能。彷佛也是一個系列。有空閱讀後再「補全」吧。瀏覽器
首先,但願製做IDE的孩子們擺正心態。不要期待可以有一個和VS媲美的IDE。VIIM僅僅是一個編輯器而已。編輯器
本文中尚存在疑惑,能夠參考以上引用文章。此文並不是初學者教程,而是初學者練習結果。因此,更偏向於我的備忘而非教學。函數
因此,推薦閱讀引用文章。當對引用文章存在疑問時,能夠參考此文。工具
個人VIM配置:www.github.com/zheng39562/vimrc學習
文中須要注意的事項:
1,符號$ 如無特別指明,皆表示後跟着一個自定義變量。如$path。path表示路徑。具體設置,且勿直接帶入。
2,文中大部分插件均可以使用help找到幫助文檔。經過閱讀幫助來得到更多信息。
1、語法高亮。
1:初學者建議使用默認高亮。在vimrc中添加。
syntax enable
syntax on
2:GVIM中能夠選擇配色。具體在:編輯->配色方案。
3:若是想添加本身的語法高亮,能夠在路徑:~/.vim/syntax/中添加。
1,引用文章B中,有一個簡短的例子。
2、函數,變量,宏的搜索和補全:Ctags。
1:首先須要安裝ctages。此軟件一般是默認安裝的,若是不是,能夠嘗試yum(但不肯定是否有此軟件)或者去官網下載http://ctags.sourceforge.net
2:使用。
1,若是是C,只須要輸入:ctags -R。若是是C++,默認補全是不支持的,須要安裝插件OmniCppComplete。地址:http://www.vim.org/scripts/script.php?script_id=1520
2,在工程的最上級目錄輸入指令。下面是C++的補全指令。
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --c++-kinds=+p : 爲C++文件增長函數原型的標籤 --fields=+iaS : 在標籤文件中加入繼承信息(i)、類成員的訪問控制信息(a)、以及函數的指紋(S) --extra=+q : 爲標籤增長類修飾符。注意,若是沒有此選項,將不能對類成員補全
1)須要注意,每次定義了新的函數或類型,須要更新tags文件。暫時還未找到簡易方法。對此有一個初步想法:將其定義成vim快捷鍵。但實現還存在困難。
3,聲徹tags文件後,你須要在你的當前文件中輸入:set tags= $current_path/tags. $current_path是指工程目錄最上級目錄。若是此工程目錄是經常使用的,能夠添加的.vimrc中。
4,完成以上步驟後,能夠嘗試 <C-]> <C-T> 來肯定功能是否成功。
1)<C-]> : 跳到定義處。 <C-T> : 回跳。
3:補全功能:文中的補全功能,須要tags文件支持。
3、源代碼總覽:TagList。
1,做用:能夠列出當前源文件的函數,變量,類等。對源代碼有總體的概覽。
1)此爲vim插件。能夠在官網下載。
2,須要在vimrc中添加設置:
let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1
3,可使用Tlist打開此插件。
4,還有不少其餘功能,但因時間和需求,暫時擱置。
4、文件瀏覽器:netrw.vim
1,做用:查看當前目錄中包含的文件。指令:e $path
2,經常使用的目錄和文件操做:
<F1> | 顯示幫助 |
<cr> | 若是光標下是目錄, 則進入該目錄; 若是光標下文件, 則打開該文件 |
- | 返回上級目錄 |
c | 切換vim 當前工做目錄正在瀏覽的目錄 |
d | 建立目錄 |
D | 刪除目錄或文件 |
i | 切換顯示方式 |
R | 文件或目錄重命名 |
s | 選擇排序方式 |
x | 定製瀏覽方式, 使用你指定的程序打開該文件 |
5、窗口管理器:WinManager
1,做用:能夠理解成分窗口的工具。
2,一個例子:同時打開TList和netrw。能夠添加到vimrc中嘗試效果。
et g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle<cr>
6、ctags增強版:Cscope.
1,使用。下載地址:http://cscope.sourceforge.net。
1)須要解壓,編譯後安裝。不肯定yum有沒有。
2)安裝好後,在vimrc中添加:set cscopequickfix=s-,c-,d-,i-,t-,e- // 設定使用quickfix窗口
3)使用cs須要在工程根目錄下設置。
cscope -Rbq
2,"cscope find"的用法: cs find c|d|e|f|g|i|s|t name
0 或 s | 查找本 C 符號(能夠跳過註釋) |
1 或 g | 查找本定義 |
2 或 d | 查找本函數調用的函數 |
3 或 c | 查找調用本函數的函數 |
4 或 t | 查找本字符串 |
6 或 e | 查找本 egrep 模式 |
7 或 f | 查找本文件 |
8 或 i | 查找包含本文件的文件 |
1)如下是參考映射:我的更喜歡的映射前綴爲:<leader>f。此爲引用文章B複製而來,下述指令爲經過本人驗證,沒法確保其正確性。
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-_>e :cs find e <C-R>=expand("<cword>")<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> nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
7、報錯窗口:quickfix.
1,介紹:vim自帶窗口。機制:將報錯信息儲存在於一個默認文件中,並使用quickfix打開。
2,指令:但是在不少場合使用。也能夠過濾部分報錯。具體設置,須要進一步學習。
cw // 打開quickfix cn // 下一個結果。 cp // 上一個結果。
8、多文件瀏覽(多BUFFER):MiniBufExplorer
1,效果:打開二個以上文件時,就會自動出現。
2,指令:TAB / <C-Tab> 進行切換。
9、h/c文件切換:插件A。引用文章B。
1,未使用。
10、搜索和高亮書籤:Grep | VisualMark。引用文章B。
1,未使用。
11、補全功能。
1,功能:補全函數,類,宏等等。
1)依賴:tags文件。
2)能夠閱讀:help new-omni-completion 瞭解更多詳情。
3)須要在vimrc添加:(暫時不懂原理)
filetype plugin indent on set completeopt=longest,menu
2,一些補全功能快捷鍵。
Ctrl+P | 向前切換成員 |
Ctrl+N | 向後切換成員 |
Ctrl+E | 表示退出下拉窗口, 並退回到原來錄入的文字 |
Ctrl+Y | 表示退出下拉窗口, 並接受當前選項 |
Ctrl+X Ctrl+L | 整行補全 |
Ctrl+X Ctrl+N | 根據當前文件裏關鍵字補全 |
Ctrl+X Ctrl+K | 根據字典補全 |
Ctrl+X Ctrl+T | 根據同義詞字典補全 |
Ctrl+X Ctrl+I | 根據頭文件內關鍵字補全 |
Ctrl+X Ctrl+] | 根據標籤補全 |
Ctrl+X Ctrl+F | 補全文件名 |
Ctrl+X Ctrl+D | 補全宏定義 |
Ctrl+X Ctrl+V | 補全vim命令 |
Ctrl+X Ctrl+U | 用戶自定義補全方式 |
Ctrl+X Ctrl+S | 拼寫建議 |
3,補全功能的缺陷:須要更新tags文件。若是新定義一個類或函數,須要更新tags文件。
1)正在嘗試直接使用vim快捷鍵解決此問題。但暫時看來彷佛不行。若有成功者,指望可以評論或email:zheng39562@163.com
12、補充。
1,由於時間和需求緣由。部分的插件和功能並未徹底按張引用文B中來執行。並且,我的並不太但願用太多的插件,而更但願瞭解機制和原理後,自行完成IDE的餘下工做。