VIM學習筆記 設定檔(vimrc)
在vim啟動過程中,首先將尋找設定檔並執行其中的命令。而這些初始設定檔案一般有vimrc、gvimrc和exrc三種。
利用:version命令,可以得到設定檔的詳細資料。
注意:如果執行gvim,那麼$VIMRUNTIME/menu.vim也會被執行。
設定檔位置
vimrc是主設定檔,它有全域和使用者兩種版本。
全域vimrc檔案,存放在Vim的安裝目錄中。可以使用以下命令,確定Vim的安裝目錄:
:echo $VIM
預設情況下,系統vimrc存放在以下位置:
Linux: /usr/share/vim/vimrc
Windows: c:\program files\vimrc
使用者vimrc檔案,存放在使用者主目錄中。可以使用以下命令,確定使用者主目錄:
:echo $HOME
預設情況下,使用者vimrc存放在以下位置:
Linux: /home/username/.vimrc
Windows: c:\documents and settings\username\_vimrc
注意:使用者設定檔優先於系統設定檔。
gvimrc是GVIM的設定檔,它也有全域和使用者兩種版本,並且存放在與vimrc相同的目錄中。
預設情況下,系統gvimrc存放在以下位置:
Linux: /usr/share/vim/gvimrc
Windows: c:\program files\vim\_gvimrc
預設情況下,使用者gvimrc存放在以下位置:
Linux: /home/username/.gvimrc
Windows: c:\documents and settings\username\_gvimrc
exrc檔案,僅用於向後相容olvi/ex,它的全域和使用者兩種版本也放置於vimrc相同的目錄裡。除非你使用vi-compatible模式,否則不需要關注exrc設定檔。
注意:在Unix和Linux下,vim的設定檔被命名為以點開頭的隱藏檔案;而在Windows下,設定檔則以底線開頭命名。
編輯設定檔
可以使用以下命令,建立緩衝區來編輯設定檔:
:edit $MYVIMRC
也可以使用以下命令,建立標籤頁來編輯設定檔:
:tabedit $MYVIMRC
例如,我們可以在設定檔中使用以下命令,來設定vim的選項:
:syntax on "開啟文法加亮功能
:set shiftwidth=4 "設定縮排寬度為4個空格
其中,單引號(")為注釋內容。
應用設定檔
修改設定檔後,需要重新啟動Vim,或使用:source命令來應用新的設定:
:source $MYVIMRC
我們可以在設定檔中增加以下命令,在儲存後自動應用配置:
autocmd bufwritepost .vimrc source $MYVIMRC
設定檔執行個體
以下是本人的vim設定檔內容,供各位參考:
set ignorecase smartcase " 搜尋時忽略大小寫,但在有一個或以上大寫字母時仍保持對大小寫敏感set nu " 顯示行號set rulerset rulerformat=%55(%{strftime('%a\ %b\ %e\ %I:%M\ %p')}\ %5l,%-6(%c%V%)\ %P%)set guioptions+=bset guioptions-=Tset paste"set clipboard=unnamed " 讓Vim和Win共用剪貼簿set cursorline cursorcolumnsyntax enable " 開啟文法高亮syntax on " 允許按指定主題進行文法高亮,而非預設高亮主題colorscheme xoria256 " 指定色彩配置set showcmd " 在命令列顯示當前輸入的命令set langmenu=en_US " 將菜單和資訊設定為英文let $LANG = 'en_US'source $VIMRUNTIME/delmenu.vimsource $VIMRUNTIME/menu.vimset fileencoding=utf-8 " 設定多編碼處理set encoding=utf-8set tenc=utf-8set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1"language message zh_CN.UTF-8filetype on " 開啟檔案類型偵測filetype plugin on " 根據偵測到的不同類型載入對應的外掛程式if has("autocmd") && exists("+omnifunc")autocmd Filetype *\ if &omnifunc == "" |\ setlocal omnifunc=syntaxcomplete#Complete |\ endifendifset laststatus=2 " 設定狀態列set statusline=%2*%n%m%r%h%w%*\ %F\ %1*[FORMAT=%2*%{&ff}:%{&fenc!=''?&fenc:&enc}%1*]\ [TYPE=%2*%Y%1*]\ [COL=%2*%03v%1*]\ [ROW=%2*%03l%1*/%3*%L(%p%%)%1*]\ [DATE=%2*%{strftime(\"%c\",getftime(expand(\"%%\")))}%1*]"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]function! InsertStatuslineColor(mode) if a:mode == 'i' hi statusline guibg=peru elseif a:mode == 'r' hi statusline guibg=blue else hi statusline guibg=black endifendfunctionau InsertEnter * call InsertStatuslineColor(v:insertmode)au InsertLeave * hi statusline guibg=orange guifg=whitehi statusline guibg=blackhi User1 guifg=grayhi User2 guifg=redhi User3 guifg=whiteset winaltkeys=no" mapnmap <tab> V>nmap <s-tab> V<vmap <tab> >gvvmap <s-tab> <gv" 開啟另存新檔對話方塊map <F2> <Esc>:browse saveas<CR>" 使用NERDTree外掛程式查看工程檔案nmap <F3> :NERDTreeToggle planning<CR>" 啟用/禁止折行nmap <silent> <F5> <Esc>:call ToggleWrap()<CR>" 顯示/禁止行列游標nmap <silent> <F6> <Esc>:call ToggleCursor()<CR>" 建立標籤頁map <F10> <Esc>:tabnew<CR>" 顯示/禁止尋找高亮度nmap <silent> <A-f> <Esc>:call ToggleHLSearch()<CR>function! ToggleWrap() if &wrap set nowrap else set wrap endifendfunctionfunction! ToggleHLSearch() if &hls set nohls else set hls endifendfunctionfunction! ToggleCursor() if &cursorcolumn set nocursorline nocursorcolumn else set cursorline cursorcolumn endifendfunctionlet mapleader=";" " 定義快速鍵的首碼,即<Leader>nmap <leader>v :tabedit $MYVIMRC<CR>" 設定檔autocmd bufwritepost _vimrc source $MYVIMRC" 設定檔案格式set fileformats=unix,dos,mac" Templateautocmd! BufNewFile * silent! 0r $VIM/vimfiles/skel/Template.%:e" 指定備份檔案目錄set backupdir=F:\Bakset backupskip=D:/Temp/*" 取消代碼自動摺疊autocmd! BufNewFile,BufRead * setlocal nofoldenable" 開啟/關閉程式碼摺疊功能nnoremap <space> za" 最佳化大檔案編輯let g:LargeFile=10" 自動負載檔案set autoreadset list!set listchars=nbsp:¬,tab:┈┈,precedes:«,extends:»,trail:hi NonText ctermfg=247 guifg=#a73111 cterm=bold gui=boldhi SpecialKey ctermfg=77 guifg=#654321augroup filetypedetect au BufNewFile,BufRead *.mxl setf mxlaugroup END
FROM: http://yyq123.blogspot.com/2012/01/vim-vimrc.html