VIM的強大除了快速鍵以外,就是可以自行對其進行配置或添加外掛程式,本文對配置及外掛程式使用進行了入門介紹,領進門後各自修行,推薦查閱內建的文檔
Vim本身的系統設定檔夾是在/usr/share/vim/和/etc/vim/兩個檔案夾下,這裡的設定檔影響所有使用者。一般情況下,我們不會去改變這兩個檔案夾下的設定檔,而是修改使用者自己的設定檔 ~/.vimrc,會覆蓋全域的設定檔 VIM配置 基礎配置
“後面跟的是注釋
" The following are commented out as they cause vim to behave a lot" differently from regular Vi. They are highly recommended though.set nu "顯示行號"set ignorecase "搜尋模式裡忽略大小寫"set smartcase " 如果搜尋模式包含大寫字元,不使用 'ignorecase'"" 選項。只有在輸入搜尋模式並且開啟 'ignorecase' 選項時才會使用。" set autowrite " 自動把內容寫迴文件: 如果檔案被修改過,在每個"" :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令時進行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令轉到別的檔案時亦然。" set autoindent " 設定自動對齊(縮排):即每行的縮排值與上一行相等;使用" noautoindent "取消設定" set smartindent " 智能對齊" set tabstop=4 " 設定定位字元(tab鍵)的寬度" set softtabstop=4 " 設定軟定位字元的寬度" set shiftwidth=4 " (自動) 縮排使用的4個空格" set cindent " 使用 C/C++ 語言的自動縮排方式" set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s" 設定C/C++語言的具體縮排方式" set backspace=2 " 設定退格鍵可用" set showmatch " 設定匹配模式,顯示匹配的括弧" set linebreak " 整詞換行" set whichwrap=b,s,<,>,[,] " 游標從行首和行末時可以跳到另一行去" set hidden " Hide buffers when they are abandoned" set mouse=a " Enable mouse usage (all modes) 使用滑鼠" set number " Enable line number 顯示行號" set previewwindow " 標識預覽視窗" set history=50 " set command history to 50 記錄50條""" "--狀態行設定--" set laststatus=2 "" 總顯示最後一個視窗的狀態行;設為1則視窗數多於一個的時候顯示最後一個視窗的狀態行;0不顯示最後一個視窗的狀態行" set ruler "" 尺規,用於顯示光線標位置的行號和列號,逗號分隔。每個視窗都有自己的尺規。如果視窗有狀態行,尺規在那裡顯示。否則,它顯示在螢幕的最後一行上。"" "--命令列設定--" set showcmd " 命令列顯示輸入的命令" set showmode " 命令列顯示vim當前模式"" "--find setting--" set incsearch " 輸入字串就顯示匹配點" set hlsearch
主題及展示
set fileformats=unix,dosset background=dark "背景顏色,很多主題如果背景顏色不同出來的效果完全不同colorscheme desert "vim內建的色彩配置儲存在/usr/share/vim/vim72/colors目錄下
外掛程式
說明 建議先安裝pathogen,用於管理其他外掛程式 如果外掛程式有自己的協助文檔,可用下面方式載入
開啟vim,在命令列模式下輸入:helptags載入外掛程式的幫組文檔,或者用:helptags help_dir載入指定目錄的幫組文檔,其中help_dir是你需要載入的外掛程式幫組文檔所在的目錄,比如~/.vim/bundle/nerdtree/doc 下面每個外掛程式的“配置”中提到的內容,直接拷貝到~/.vimrc文檔中
pathogen
管理外掛程式的外掛程式
pathogen讓每個外掛程式佔有一個單獨的目錄,解決了檔案分散的問題
pathongen主要用於管理外掛程式,因為每個外掛程式都有自己的一套包括諸如auto,doc,color等檔案夾的目錄,如果將每個外掛程式的對應檔案每次都放到對應目錄下,是一件很繁瑣的事情,而pathogen正是為瞭解決這個問題而出現的外掛程式。
pathongen啟用後,只要每次將外掛程式的獨立目錄結構整個copy到bundle目錄下即可由pathongen接手自行運行新外掛程式 地址
https://github.com/tpope/vim-pathogen 安裝
將pathongen.vim拷貝到~/.vim/autoload目錄下,即,將解壓後的autoload目錄連同裡面的pathogen.vim外掛程式拷貝到~/.vim/目錄下 啟用
在~/.vimrc 檔案裡, filetype plugin indent on之前的任何地方,加入call pathogen#infect()
例如:
execute pathogen#infect()syntax onfiletype plugin indent on
用法
如果要添加新的外掛程式,只需將外掛程式下載後,整個目錄copy到~/.vim/bundle/目錄下,也就是每個外掛程式在buddle目錄下各自有一個目錄
後面的外掛程式,如無特殊說明,都是這麼應用的 配置
call pathogen#infect()syntax enablesyntax onfiletype plugin indent on
其他
pathogen和vundle都是用來管理vim外掛程式的,但是其作用的方面不同。
pathogen是為瞭解決每一個外掛程式安裝後檔案分散到多個目錄不好管理而存在的。vundle是為瞭解決自動搜尋及下載外掛程式而存在的 ctags+tagbar+omnicppcomplete
產生標籤+展示+聯想 ctags
ctags不是vim的外掛程式,而是一個系統工具,用於遍曆原始碼檔案,建立源碼樹的標籤索引(標籤就是一個標識符被定義的地方,如函數定義),產生tags檔案,這些tags檔案能被編輯器或其它工具用來快速尋找定位原始碼中的符號(tag/symbol),如變數名,函數名等。提供給tagbar和omnicppcomplete調用,查看函數原型 安裝 從http://ctags.sourceforge.net/下載原始碼包後,解壓縮產生原始碼目錄 然後進入原始碼根目錄執行./configure, 然後執行make, 編譯成功後執行make install。 在~/.vimrc中增加以下這行:
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> 產生tags
在原始碼所在目錄下,c及c++檔案分別執行下面的命令
c :tags -R src
c++:ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src –c++-kinds=+p : 為C++檔案增加函數原型的標籤 –fields=+iaS : 在標籤檔案中加入繼承資訊(i)、類成員的存取控制資訊(a)、以及函數的指紋(S) –extra=+q :為標籤增加類修飾符。注意,如果沒有此選項,將不能對類成員補全 -R : 遞迴產生src中所有源檔案的tags檔案 設定檔
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>set tags+=tags; "設定tags的包含目錄 "set tags+=./tags "在當前工作目錄下搜尋tags檔案 add current directory's generated tags file"set autochdir
用法
把游標移動到某個元素上, CTRL+]就會跳轉到對應的定義
CTRL+o 可以回退到原來的地方。如果當前游標下是個局部變數, gd 跳到這個局部變數的定義處。 快速鍵:Ctrl+] 跳到當前游標下單詞的標籤Ctrl+O 返回上一個標籤Ctrl+T 返回上一個標籤:tag TagName 跳到TagName標籤以上命令是在當前視窗顯示標籤,當前視窗的檔案替代為包標籤的檔案,當前視窗游標跳到標籤位置。如果不希望在當前視窗顯示標籤,可以使用以下命令::stag TagName 新視窗顯示TagName標籤,游標跳到標籤處Ctrl+W + ] 新視窗顯示當前游標下單詞的標籤,游標跳到標籤處當一個標籤有多個匹配項時(函數 (或類中的方法) 被多次定義),":tags"命令會跳轉到第一處。如果在當前檔案中存在匹配,那它將會被首先使用。可以用這些命令在各匹配的標籤間移動::tfirst 到第一個匹配:[count]tprevious 向前 [count] 個匹配:[count]tnext 向後 [count] 個匹配:tlast 到最後一個匹配或者使用以下命令選擇要跳轉到哪一個:tselect TagName輸入以上命令後,vim會為你展示一個挑選清單。然後你可以輸入要跳轉到的匹配代號(在第一列)。其它列的資訊可以讓你知道標籤在何處被定義過。以下命令將在預覽視窗顯示標籤:ptag TagName 預覽視窗顯示TagName標籤,游標跳到標籤處Ctrl+W + } 預覽視窗顯示當前游標下單詞的標籤,游標跳到標籤處:pclose 關閉預覽視窗:pedit file.h 在預覽視窗中編輯檔案file.h(在編輯標頭檔時很有用):psearch atoi尋找當前檔案和任何包含檔案中的單詞並在預覽視窗中顯示匹配,在使用沒有標籤檔案的庫函數時十分有用。
其他
Cscope是一個類似於ctags的工具,不過其功能比ctags強大很多 tagbar外掛程式
tagbar是一個taglist的替代品,比taglist更適合c++使用,函數能夠按類區分,支援按類摺疊顯示等,顯示結果清晰簡潔 地址
https://github.com/majutsushi/tagbar 配置
nmap <F4> :TagbarToggle<CR> "設定快速鍵 F4 "let g:tagbar_width = 40 "設定寬度,預設為40 ""autocmd VimEnter * nested :call tagbar#autoopen(1) "開啟vim時自動開啟tagbar"let g:tagbar_left = 1 "在左側let g:tagbar_right = 1 "在右側
omnicppcomplete
對C++進行文法補全的外掛程式,可以對函數、命名空間、類成員等進行補全
基於ctags產生的索引資訊來實現 地址
http://www.vim.org/scripts/script.php?script_id=1520 用法
e.g:輸入pri,然後按下”Ctrl+X Ctrl+O”,此時vi會彈出一個視窗,所有以pri開頭的tag都會出現在這個視窗中
當自動補全下拉視窗彈出後,一些可用的快速鍵:
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 拼字建議協助文檔:help omnicppcomplete
配置
set completeopt=longest,menu "let OmniCpp_NamespaceSearch = 2 " search namespaces in the current buffer and in included fileslet OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]let OmniCpp_NamespaceSearch = 1let OmniCpp_GlobalScopeSearch = 1let OmniCpp_ShowAccess = 1let OmniCpp_ShowPrototypeInAbbr = 1 " 顯示函數參數列表let OmniCpp_MayCompleteDot = 1 " 輸入 . 後自動補全let OmniCpp_MayCompleteArrow = 1 " 輸入 -> 後自動補全let OmniCpp_MayCompleteScope = 1 " 輸入 :: 後自動補全let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]" 自動關閉補全視窗" au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif" set completeopt=menuone,menu,longest"美化highlight Pmenu guibg=darkgrey guifg=black highlight PmenuSel guibg=lightgrey guifg=black"Pmenu 是所有項的配色,PmenuSel 是選中項的配色,guibg 和 guifg 分別對應背景色和前景色彩。
對STL補全
安裝 下載STL原始碼 拷貝到指定檔案夾
cp ~/.vim/tags/cpp_src 執行ctag命令
ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ 在~/.vimrc添加如下設定
set tags+=~/.vim/tags/cpp_src/tags
nerdtree
檔案樹瀏覽 地址
https://github.com/scrooloose/nerdtree 配置
map <C-n> :NERDTree<CR> "ctrl+n快速鍵開啟"vim-cpp-enhanced-highlight c++ 高亮增強"Highlighting of class scope is disabled by default. To enable setlet g:cpp_class_scope_highlight =0 "tagHighlight 高亮typedef類型 枚舉 宏等的vim外掛程式TagHighlight "開啟源碼檔案,然後":UpdateTypesFile"h\c切換 a.vim(針對C、C++)"將a.vim複製到d:\Program Files\Vim\vim73\plugin,在_vimrc中添加: nnoremap <silent> <F12> :A<CR> "按F12即可以在c/h檔案中切換,也可以通過輸入:A實現 "Highlighting of template functions is enabled by settinglet g:cpp_experimental_template_highlight = 1
用法
ctrl+n開啟並跳轉的視窗,通過將游標置於一個目錄/檔案上,通過一個按鍵來操作,下面列出幾個常用按鍵及其對應的操作。更多的操作可以通過輸入“。”查看協助文檔
檔案相關操作o : 在游標所在的上一個視窗開啟檔案,並將游標置於新開啟的視窗go : 預覽檔案,游標停留在NERDTree視窗中t : 在新標籤中開啟檔案並啟用gt : 在新標籤開啟檔案,游標留在NERDTree視窗中i : 水平分割開啟檔案gi : 水平分割預覽s : 垂直分割開啟檔案gs : 垂直分割預覽分類樹相關操作o : 展開/關閉目錄O : 遞迴展開目錄。慎用,如果目錄層級多,開啟會很慢x : 關閉父目錄C : 切換游標所在目錄為根目錄u : 切換分類樹的根目錄為上層目錄U : 切換分類樹的根目錄為上層目錄,並保持舊的分類樹的狀態r : 重新整理目前的目錄R : 重新整理當前根目錄(這個在新加入檔案後會用到)cd : 切換vim工作目錄為游標所在目錄(命令模式下:pwd可查看當前工作目錄)
YouCompleteMe
YouCompleteMe是一個比較新Vim代碼補全外掛程式,可以基於clang為C/C++代碼提供代碼提示
YCM需要vim版本至少是7.3.584,可以用 :version 查看vim版本號碼
另外需要支援python, :echo has(‘python’) 的結果是1. 地址
https://github.com/Valloric/YouCompleteMe 安裝
YCM的安裝相對複雜一點, 首先用下載外掛程式,用pathogen(或者vundle)進行相應的安裝 然後下載clang,放在ycm_temp/llvm_root_dir 下:
$ mkdir -p ~/ycm_temp/llvm_root_dir $ mv ~/Download/clang+llvm/* ~/ycm_temp/llvm_root_dir $ cd ycm_temp/llvm_root_dir $ llvm_root_dir ls bin docs include lib share
安裝 cmake 和 python-dev ,然後編譯如下:
$ cd ~ $ mkdir ycm_build $ cd ycm_build $ cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/cpp $ ycm_core
xptemplate
比snipmate更強的程式碼片段補全 用法
“要想看當前檔案類型支援的程式碼片段,可以在insert模式下鍵入 ctr+r ctr+r ctr+\
“insert模式下輸入片段的名字,然後 ctr+\ 即可插入代碼,然後可以用TAB、Shift Tab前後更改高亮顯示的內容。
“ SuperTab
omnicppcomplete觸發補全需要用到ctr+x ctr+o,SuperTab支援TAB鍵補全
由於TAB鍵被映射成了補全快速鍵,也就無法通過TAB鍵直接輸入定位字元,這時如果想要輸入定位字元可以通過ctr+v TAB即可,即先輸入ctr+v再輸入TAB鍵,在vim下通過ctl+v可以輸入很多不可見字元,比如試試ctr+v ctr+w 地址
https://github.com/ervandew/supertab 禁用外掛程式
通過pathogen管理外掛程式,可以有兩種方式:
第一種,在~/.vimrc中添加,主要要放在execute pathogen#infect()之前
let g:pathogen_disabled = ['vim-cpp-enhanced-highlight']"如果版本小於7.0,則禁用YourCompliteMe"if v:version < '703584' call add(g:pathogen_disabled, 'YouCompleteMe') endifexecute pathogen#infect()
第二種,修改.vim/bundle中外掛程式目錄名字,比如要禁用外掛程式vim-cpp-enhanced-highlight,可以通過下面命令
$ mv vim-cpp-enhanced-highlight vim-cpp-enhanced-highlight~
完整vimrc檔案
"Vim本身的系統設定檔夾是在/usr/share/vim/和/etc/vim/兩個檔案夾下,這裡的設定檔影響所有使用者。一般情況下,我們不會去改變這兩個檔案夾下的設定檔,而是修改使用者自己的設定檔~/.vimrc,會覆蓋全域的設定檔"set nu"pathogen管理外掛程式的外掛程式"pathogen讓每個外掛程式佔有一個單獨的目錄,解決了檔案分散的問題"安裝:將pathongen.vim拷貝到~/.vim/autoload目錄下,即,將解壓後的autoload目錄連同裡面的pathogen.vim外掛程式拷貝到~/.vim/目錄下"啟用:在~/.vimrc 檔案裡, filetype plugin indent on之前的任何地方,加入希篶all pathogen#infect()"安裝新外掛程式:將外掛程式下載後,整個目錄copy到~/.vim/bundle/目錄下,也就是每個外掛程式在buddle目錄下各自有一個目錄"禁用外掛程式 To disable a plugin, add it's bundle name to the following list"let g:pathogen_disabled = ['vim-cpp-enhanced-highlight']"以上這種方式待確認,也可以用"mv vim-cpp-enhanced-highlight vim-cpp-enhanced-highlight~"實現禁用call pathogen#infect()syntax enable "文法高亮"syntax on"detect file type" 自適應不同語言的智慧縮排filetype indent onfiletype plugin indent on" 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'" 選項。只有在輸入搜尋模式並且開啟 'ignorecase' 選項時才會使用。" set autowrite " 自動把內容寫迴文件: 如果檔案被修改過,在每個" :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-]" 和 CTRL-^命令時進行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9}" 命令轉到別的檔案時亦然。" set autoindent " 設定自動對齊(縮排):即每行的縮排值與上一行相等;使用" noautoindent 取消設定" "set smartindent " 智能對齊" set tabstop=4 " 設定定位字元(tab鍵)的寬度" set softtabstop=4 " 設定軟定位字元的寬度" set shiftwidth=4 " (自動) 縮排使用的4個空格" set cindent " 使用 C/C++ 語言的自動縮排方式" set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s" "設定C/C++語言的具體縮排方式" set backspace=2 " 設定退格鍵可用" set showmatch " 設定匹配模式,顯示匹配的括弧" set linebreak " 整詞換行" set whichwrap=b,s,<,>,[,] " 游標從行首和行末時可以跳到另一行去" set hidden " Hide buffers when they are abandoned" set mouse=a " Enable mouse usage (all modes) "使用滑鼠" set number " Enable line number "顯示行號" set previewwindow " 標識預覽視窗" set history=50 " set command history to 50 "記錄50條""" "--狀態行設定--" set laststatus=2 "" 總顯示最後一個視窗的狀態行;設為1則視窗數多於一個的時候顯示最後一個視窗的狀態行;0不顯示最後一個視窗的狀態行" set ruler "" 尺規,用於顯示光線標位置的行號和列號,逗號分隔。每個視窗都有自己的尺規。如果視窗有狀態行,尺規在那裡顯示。否則,它顯示在螢幕的最後一行上。"" "--命令列設定--" set showcmd " 命令列顯示輸入的命令" set showmode " 命令列顯示vim當前模式"" "--find setting--" set incsearch " 輸入字串就顯示匹配點" set hlsearch"pathogen和vundle都是用來管理vim外掛程式的,但是其作用的方面不同。"pathogen是為瞭解決每一個外掛程式安裝後檔案分散到多個目錄不好管理而存在的。vundle是為瞭解決自動搜尋及下載外掛程式而存在的"schemeset fileformats=unix,dos"let g:solarized_termtrans = 1set background=darkcolorscheme desert "vim內建的色彩配置儲存在/usr/share/vim/vim72/colors目錄下"togglebg#map("<F5>")"ctags+tagbar+omnicppcomplete 產生標籤+展示"第一步產生tags"產生tags,查看函數原型"c :ctags -R src"c++:ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src" --c++-kinds=+p : 為C++檔案增加函數原型的標籤" --fields=+iaS : 在標籤檔案中加入繼承資訊(i)、類成員的存取控制資訊(a)、以及函數的指紋(S)" --extra=+q : 為標籤增加類修飾符。注意,如果沒有此選項,將不能對類成員補全" -R : 遞迴產生src中所有源檔案的tags檔案"tag命令用法:使用tags檔案也很簡單,把游標移動到某個元素上, CTRL+]就會跳轉到對應的定義,"CTRL+o 可以回退到原來的地方。如果當前游標下是個局部變數, gd 跳到這個局部變數的定義處。 "快速鍵:"Ctrl+] 跳到當前游標下單詞的標籤"Ctrl+O 返回上一個標籤"Ctrl+T 返回上一個標籤":tag TagName 跳到TagName標籤"以上命令是在當前視窗顯示標籤,當前視窗的檔案替代為包標籤的檔案,當前視窗游標跳到標籤位置。如果不希望在當前視窗顯示標籤,可以使用以下命令:":stag TagName 新視窗顯示TagName標籤,游標跳到標籤處"Ctrl+W + ] 新視窗顯示當前游標下單詞的標籤,游標跳到標籤處"當一個標籤有多個匹配項時(函數 (或類中的方法) 被多次定義),":tags""命令會跳轉到第一處。如果在當前檔案中存在匹配,那它將會被首先使用。"可以用這些命令在各匹配的標籤間移動:":tfirst 到第一個匹配":[count]tprevious 向前 [count] 個匹配":[count]tnext 向後 [count] 個匹配":tlast 到最後一個匹配"或者使用以下命令選擇要跳轉到哪一個":tselect TagName"輸入以上命令後,vim會為你展示一個挑選清單。然後你可以輸入要跳轉到的匹配代號"(在第一列)。其它列的資訊可以讓你知道標籤在何處被定義過。"以下命令將在預覽視窗顯示標籤":ptag TagName 預覽視窗顯示TagName標籤,游標跳到標籤處"Ctrl+W + } 預覽視窗顯示當前游標下單詞的標籤,游標跳到標籤處":pclose 關閉預覽視窗":pedit file.h 在預覽視窗中編輯檔案file.h(在編輯標頭檔時很有用)":psearch atoi"尋找當前檔案和任何包含檔案中的單詞並在預覽視窗中顯示匹配,在使用沒有標籤檔案的庫函數時十分有用。" """Cscope是一個類似於ctags的工具,不過其功能比ctags強大很多map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>set tags+=tags; "設定tags的包含目錄 set tags+=./tags "在當前工作目錄下搜尋tags檔案 add current directory's generated tags file"set autochdir"第二步,tagbar外掛程式"tagbar是一個taglist的替代品,比taglist更適合c++使用,函數能夠按類區分,支援按類摺疊顯示等,顯示結果清晰簡潔"tagbar"https://github.com/majutsushi/tagbarnmap <F4> :TagbarToggle<CR> "設定快速鍵 let g:tagbar_width = 40 "設定寬度,預設為40 "autocmd VimEnter * nested :call tagbar#autoopen(1) "開啟vim時自動開啟tagbar"let g:tagbar_left = 1 "在左側let g:tagbar_right = 1 "在右側 ""第三步omnicppcomplete"是基於ctags資料庫即tags檔案實現的(基於ctags產生的索引資訊來實現自動補全的)"對C++進行文法補全的外掛程式,可以對函數、命名空間、類成員等進行補全,使用起來和絕大多數IDE差不多,不一樣的是IDE為你做了很多你不知道的事情,而omni補全需要依賴tags檔案,需要你用ctags命令自己產生"e.g:輸入pri,然後按下"Ctrl+X Ctrl+O",此時vi會彈出一個視窗,所有以pri開頭的tag都會出現在這個視窗中"當自動補全下拉視窗彈出後,一些可用的快速鍵:"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+]