連接:http://blog.163.com/023_dns/blog/static/1187273662012125112426472/linux
Vim強大的功能,其來源基本上就兩個地方:Vim插件以及Vim配置文件。 Vim自己的系統配置文件夾是在/usr/share/vim/和/etc/vim/兩個文件夾下。通常狀況下,咱們不會去改變這兩個文件夾下的配置文件,而是在用戶文件夾/home/user下創建本身的配置文件。進入用戶文件夾以後,新建一個名叫.vimrc的文件程序員
在.vimrc裏面加上如下的代碼:編程
set nocompatible if has("syntax") syntax on endif colorscheme ron filetype on filetype plugin on set background=dark if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif filetype plugin indent on endif 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 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 showmatch " 設置匹配模式,顯示匹配的括號 set linebreak " 整詞換行 set whichwrap=b,s,<,>,[,] " 光標從行首和行末時能夠跳到另外一行去 set mouse=a " Enable mouse usage (all modes) "使用鼠標 set number " Enable line number "顯示行號 set history=50 " set command history to 50 "歷史記錄50條 set laststatus=2 " 總顯示最後一個窗口的狀態行;設爲1則窗口數多於一個的時候顯示最後一個窗口的狀態行;0不顯示最後一個窗口的狀態行 set ruler " 標尺,用於顯示光標位置的行號和列號,逗號分隔。每一個窗口都有本身的標尺。若是窗口有狀態行,標尺在那裏顯示。不然,它顯示在屏幕的最後一行上。 set showcmd " 命令行顯示輸入的命令 set showmode " 命令行顯示vim當前模式 set incsearch " 輸入字符串就顯示匹配點 set hlsearch
而後新建的文件就會有一些規則了(換行等)vim
ctags能夠創建源碼樹的標籤索引(標籤就是一個標識符被定義的地方,如函數定義),使程序員在編程時能迅速定位函數、變量、宏定義等位置去查看原形函數
yum install ctags
ctags須要創建源碼索引才能使用,所以咱們在咱們編寫的源碼下面:this
ctags -R *
創建索引。 在.vimrc文件中加入:spa
"--ctags setting-- " 按下F5從新生成tag文件,並更新taglist 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移動到別的目錄,不然ctrl+]時,會提示找不到源碼文件)
set tags+=./tags表示在當前工做目錄下搜索tags文件 set tags+=~/arm/linux-2.6.24.7/tags表示在搜尋tags文件的時候,也要搜尋~/arm/linux-2.6.24.7/文件夾下的tags文件。 而後保存並退出vi。這樣,你就能夠用vim在任意地方查看有關Linux的函數原形。 tag命令用法: 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 查找當前文件和任何包含文件中的單詞並在預覽窗口中顯示匹配,在使用沒有標籤文件的庫函數時十分有用。 最簡單的使用方法舉例 用vi在任意目錄寫一個Test.c文件,內容以下:prototype
int main(void) { printf("Hello World!\n"); return 0; }
寫好後末行模式輸入w保存好(不要退出vi),按Esc回到指令模式,把光標停留在printf上 而後按 Ctrl + ],vi會自動跳到Linux系統函數printf()處,這時咱們能查看printf()的原形,查看完了,按Ctrl+o(回到上一個標籤) 就回到原來的地方 插件
vim的自動補全功能可經過其插件OmniCppComplete實現。 安裝OmniCppComplete; 配置OmniCppComplete; 在vim配置文件/home/user/.vimrc中加入以下的配置:命令行
"-- omnicppcomplete setting -- imap <F3> <C-X><C-O> " 按下F3自動補全代碼,注意該映射語句後不能有其餘字符,包括tab;不然按下F3會自動補全一些亂碼 imap <F2> <C-X><C-I> " 按下F2根據頭文件內關鍵字補全 set completeopt=menu,menuone " 關掉智能補全時的預覽窗口 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