下面是個人 .vimrc 配置文件,每個配置項都添加了註釋說明,詳解每個配置項的做用,以便確認爲何要添加這個配置項。java
" 使用vim的modeline來設置當前文件的textwidth,避免輸入超過78個字符時自動換行 " 使用:verbose set textwidth?命令能夠看到vim默認爲vim配置腳本設置了textwidth " 爲78,當輸入超過78個字符並按下空格鍵時會自動換行.將textwidth設成0關閉該功能 "" vim: tw=0 : " 去掉有關vi一致性模式,避免操做習慣上的侷限. set nocompatible " 讓Backspace鍵能夠往前刪除字符. " Debian系統自帶的vim版本會加載一個debian.vim文件,默認已經設置這一項, " 能夠正常使用Backspace鍵.若是使用本身編譯的vim版本,並自行配置.vimrc文件, " 可能就沒有設置這一項,致使Backspace鍵用不了,或者時靈時不靈.因此主動配置. set backspace=indent,eol,start " 1=啓動顯示狀態行, 2=老是顯示狀態行.設置老是顯示狀態行,方便看到當前文件名. set laststatus=2 " 設置ruler會在右下角顯示光標所在的行號和列號,不方便查看.改爲設置狀態欄顯示內容 "" set ruler " 設置狀態行顯示的內容. %F: 顯示當前文件的完整路徑. %r: 若是readonly,會顯示[RO] " %B: 顯示光標下字符的編碼值,十六進制. %l:光標所在的行號. %v:光標所在的虛擬列號. " %P: 顯示當前內容在整個文件中的百分比. %H和%M是strftime()函數的參數,獲取時間. set statusline=%F%r\ [HEX=%B][%l,%v,%P]\ %{strftime(\"%H:%M\")}
" 顯示尚未輸入完整的命令.例如yy命令,輸入第一個y會在右下角顯示y. set showcmd " 使用Tab鍵補全時,在狀態欄顯示匹配的列表,方便查看都有哪些命令符合補全條件. set wildmenu " 顯示行號 set number " 高亮顯示匹配的括號 set showmatch
" 高亮顯示全部搜索到的內容.後面用map映射快捷鍵來方便關閉當前搜索的高亮. set hlsearch " 光標馬上跳轉到搜索到內容 set incsearch " 搜索到最後匹配的位置後,再次搜索不回到第一個匹配處 set nowrapscan " 去掉輸入錯誤時的提示聲音 set noeb " 默認按下Esc後,須要等待1秒才生效,設置Esc超時時間爲100ms,儘快生效 set ttimeout set ttimeoutlen=100
" 設置文件編碼,主要是避免中文亂碼.先註釋,後續遇到中文亂碼再打開 "" set fileencodings=utf-8,cp936,big5,latin1 " FIXME 在MS-DOS控制檯打開vim時,控制檯使用鼠標右鍵來複制粘貼,設置 " 全鼠標模式,鼠標右鍵被映射爲visual mode,不能用來複制粘貼,不方便. " 可是若是不設置鼠標模式,會沒法使用鼠標滾輪來滾動界面.通過驗證,發現 " 能夠設成普通模式mouse=n來使用鼠標滾輪,也能使用鼠標右鍵複製粘貼. " mouse=c/mouse=i模式都不能用鼠標滾輪. Linux下仍是要設成 mouse=a set mouse=n " FIXME 在MS-DOS控制檯打開vim,光標很小,不方便看到光標在哪裏.下面 " 設置cursorline,高亮光標所在的行.cursorlineopt=number只高亮行號部分, " 不影響正文內容的顯示. 在其餘容易看到光標的終端上能夠去掉這兩個設置. set cursorline set cursorlineopt=number
" 開啓語法高亮 syntax enable " 檢測文件類型,並載入文件類型插件,爲特定文件類型載入相關縮進文件 filetype plugin indent on " 設置自動補全的選項. longest表示只自動補全最大匹配的部分,剩餘部分經過 " CTRL-P/CTRL-N來選擇匹配項進行補全. menu表示彈出可補全的內容列表. " 若是有多個匹配,longest選項不會自動選中並完整補全,要多按一次CTRL-P,比較 " 麻煩,不作設置,保持默認設置,vim默認沒有設置longest. "" set completeopt=longest,menu
" 自動縮進.這個致使從外面拷貝多行以空格開頭的內容時,會有多的縮進,先不設置. "" set autoindent " 設置C風格的自動縮進.設置filetype indent on後,就會根據文件類型自動縮進. " 按照vim用戶手冊'30.3 Automatic indenting'的說明,能夠再也不單獨設置cindent. "" set cindent " 自動縮進時,縮進長度爲4 set shiftwidth=4 " 輸入Tab字符時,自動替換成空格 set expandtab " 設置softtabstop有一個好處是能夠用Backspace鍵來一次刪除4個空格. " softtabstop的值爲負數,會使用shiftwidth的值,二者保持一致,方便統一縮進. set softtabstop=-1
" 設置顏色主題,適用於黑色背景. colorscheme slate " 建立一個新的 MyTabSpace 組,並設置它的顏色 highlight MyTabSpace ctermfg=darkgrey " 指定tab字符和空格的顏色組爲MyTabSpace,不一樣字符串之間用|隔開,要使用\|轉義. match MyTabSpace /\t\| / " 針對特定類型的代碼文件,設置顯示Tab鍵和行尾空格以便在查看代碼時注意到它們 " TODO 後續查看代碼若是體驗很差再改爲用map映射快捷鍵開關list來動態切換顯示 autocmd FileType c,cpp,java,xml setlocal list | set listchars=tab:>~,trail:.
" 配置 gtags 插件,用於在函數之間跳轉,方便查看源代碼. " 參考 gtags-cscopde.vim 的註釋,添加下面語句來使用 ':tag' 和 '<C-]>' set cscopetag " 設置 cscopetag 後,因爲gtags-cscopde默認沒有啓動,還須要進行下面的設置, " 結合這兩個設置, gtags 就可使用Ctrl-]鍵來跳轉到函數定義處. let GtagsCscope_Auto_Load = 1 " 配置 GtagsCscope_Auto_Load = 1 後,在沒有GTAGS文件的目錄下使用vim,會提示 " Gtags-cscope: GTAGS not found. " Press ENTER or type command to continue " 須要按回車纔會打開文件.若是要去掉這個報錯,須要設置GtagsCscope_Quiet = 1 let g:GtagsCscope_Quiet = 1 " 設置只有一個匹配結果時,不顯示quickfix窗口 let g:Gtags_Close_When_Single = 1
" 配置 quickfix 相關命令的快捷鍵. 能夠用:map命令查看vim已有的快捷鍵映射. nnoremap <F2> :cclose<CR> nnoremap <F3> :cn<CR> nnoremap <F4> :cp<CR> " vim 用 map 命令來映射快捷鍵,它前面能夠加一些前綴來對應不一樣的場景. " 下面 map 前面的 nore 表示非遞歸. nore 前面的n表示只在普通模式下生效. " 即,基於下面的配置,在插入模式下,按F6沒有這個映射效果.插入模式對應i. " 下面配置cscope查找文件命令的快捷鍵爲F6,因爲須要手動輸入文件名,不要加<CR> nnoremap <F6> :cs find f<Space> " 若是要去掉高亮顯示搜索到的內容,須要再次搜索一些不存在的字符串,比較麻煩.能夠 " 在vim的命令行中執行nohlsearch命令去掉當前高亮.下面以:開頭表示在命令行執行. nnoremap <F9> :nohlsearch<CR> " 插入模式下也用F9來去掉搜索高亮.下面的<C-o>表示CTRL-O,在插入模式執行一次命令 inoremap <F9> <C-o>:nohlsearch<CR>