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 " 搜尋時忽略大小寫,但在有一個或以上大寫字母時仍保持對大小寫敏感</p><p>set nu " 顯示行號<br />set ruler<br />set rulerformat=%55(%{strftime('%a\ %b\ %e\ %I:%M\ %p')}\ %5l,%-6(%c%V%)\ %P%)<br />set guioptions+=b<br />set guioptions-=T</p><p>set paste<br />"set clipboard=unnamed " 讓Vim和Win共用剪貼簿</p><p>set cursorline cursorcolumn</p><p>syntax enable " 開啟文法高亮<br />syntax on " 允許按指定主題進行文法高亮,而非預設高亮主題<br />colorscheme xoria256 " 指定色彩配置</p><p>set showcmd " 在命令列顯示當前輸入的命令</p><p>set langmenu=en_US " 將菜單和資訊設定為英文<br />let $LANG = 'en_US'<br />source $VIMRUNTIME/delmenu.vim<br />source $VIMRUNTIME/menu.vim</p><p>set fileencoding=utf-8 " 設定多編碼處理<br />set encoding=utf-8<br />set tenc=utf-8<br />set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1<br />"language message zh_CN.UTF-8</p><p>filetype on " 開啟檔案類型偵測<br />filetype plugin on " 根據偵測到的不同類型載入對應的外掛程式</p><p>if has("autocmd") && exists("+omnifunc")<br />autocmd Filetype *<br />\ if &omnifunc == "" |<br />\ setlocal omnifunc=syntaxcomplete#Complete |<br />\ endif<br />endif</p><p>set laststatus=2 " 設定狀態列<br />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*]<br />"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]</p><p>function! InsertStatuslineColor(mode)<br /> if a:mode == 'i'<br /> hi statusline guibg=peru<br /> elseif a:mode == 'r'<br /> hi statusline guibg=blue<br /> else<br /> hi statusline guibg=black<br /> endif<br />endfunction</p><p>au InsertEnter * call InsertStatuslineColor(v:insertmode)<br />au InsertLeave * hi statusline guibg=orange guifg=white<br />hi statusline guibg=black</p><p>hi User1 guifg=gray<br />hi User2 guifg=red<br />hi User3 guifg=white</p><p>set winaltkeys=no</p><p>" map<br />nmap <tab> V><br />nmap <s-tab> V<<br />vmap <tab> >gv<br />vmap <s-tab> <gv<br />" 開啟另存新檔對話方塊<br />map <F2> <Esc>:browse saveas<CR><br />" 使用NERDTree外掛程式查看工程檔案<br />nmap <F3> :NERDTreeToggle planning<CR><br />" 啟用/禁止折行<br />nmap <silent> <F5> <Esc>:call ToggleWrap()<CR><br />" 顯示/禁止行列游標<br />nmap <silent> <F6> <Esc>:call ToggleCursor()<CR><br />" 建立標籤頁<br />map <F10> <Esc>:tabnew<CR><br />" 顯示/禁止尋找高亮度<br />nmap <silent> <A-f> <Esc>:call ToggleHLSearch()<CR></p><p>function! ToggleWrap()<br /> if &wrap<br /> set nowrap<br /> else<br /> set wrap<br /> endif<br />endfunction</p><p>function! ToggleHLSearch()<br /> if &hls<br /> set nohls<br /> else<br /> set hls<br /> endif<br />endfunction</p><p>function! ToggleCursor()<br /> if &cursorcolumn<br /> set nocursorline nocursorcolumn<br /> else<br /> set cursorline cursorcolumn<br /> endif<br />endfunction</p><p>let mapleader=";" " 定義快速鍵的首碼,即<Leader><br />nmap <leader>v :tabedit $MYVIMRC<CR></p><p>" 設定檔<br />autocmd bufwritepost _vimrc source $MYVIMRC</p><p>" 設定檔案格式<br />set fileformats=unix,dos,mac</p><p>" Template<br />autocmd! BufNewFile * silent! 0r $VIM/vimfiles/skel/Template.%:e</p><p>" 指定備份檔案目錄<br />set backupdir=F:\Bak<br />set backupskip=D:/Temp/*</p><p>" 取消代碼自動摺疊<br />autocmd! BufNewFile,BufRead * setlocal nofoldenable<br />" 開啟/關閉程式碼摺疊功能<br />nnoremap <space> za</p><p>" 最佳化大檔案編輯<br />let g:LargeFile=10</p><p>" 自動負載檔案<br />set autoread</p><p>set list!<br />set listchars=nbsp:¬,tab:┈┈,precedes:«,extends:»,trail:<br />hi NonText ctermfg=247 guifg=#a73111 cterm=bold gui=bold<br />hi SpecialKey ctermfg=77 guifg=#654321</p><p>augroup filetypedetect<br /> au BufNewFile,BufRead *.mxl setf mxl<br />augroup END</p><p>
FROM: http://yyq123.blogspot.com/2012/01/vim-vimrc.html