在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 ruler
set rulerformat=U(%{strftime('%a\ %b\ %e\ %I:%M\ %p')}\
%5l,%-6(%c%V%)\ %P%)
set guioptions+=b
set guioptions-=T
set paste
"set clipboard=unnamed " 讓Vim和Win共用剪貼板
set cursorline cursorcolumn
syntax enable " 打開語法高亮
syntax on " 允許按指定主題進行語法高亮,而非默認高亮主題
colorscheme xoria256 " 指定配色方案
set showcmd " 在命令行顯示當前輸入的命令
set langmenu=en_US " 將菜單和信息設置爲英文
let $LANG = 'en_US'
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
set fileencoding=utf-8 " 設置多編碼處理
set encoding=utf-8
set tenc=utf-8
set
fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"language message zh_CN.UTF-8
filetype on " 開啓文件類型偵測
filetype plugin on " 根據偵測到的不同類型加載對應的插件
if has("autocmd") &&
exists("+omnifunc")
autocmd Filetype *
\ if &omnifunc == "" |
\ setlocal omnifunc=syntaxcomplete#Complete |
\ endif
endif
set 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*v%1*]\ [ROW=%2*l%1*/%3*%L(%p%%)%1*]\
[DATE=%2*%{strftime(\"%c\",getftime(expand(\"%%\")))}%1*]
"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\
[TYPE=%Y]\ [ASCII=\.3b]\ [HEX=\.2B]\ [POS=l,v][%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
endif
endfunction
au InsertEnter * call
InsertStatuslineColor(v:insertmode)
au InsertLeave * hi statusline guibg=orange guifg=white
hi statusline guibg=black
hi User1 guifg=gray
hi User2 guifg=red
hi User3 guifg=white
set winaltkeys=no
" map
nmap <tab>
V>
nmap <s-tab>
V<
vmap <tab>
>gv
vmap <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
endif
endfunction
function! ToggleHLSearch()
if
&hls
set nohls
else
set hls
endif
endfunction
function! ToggleCursor()
if
&cursorcolumn
set nocursorline
nocursorcolumn
else
set cursorline
cursorcolumn
endif
endfunction
let mapleader=";" "
定義快捷鍵的前綴,即<Leader>
nmap <leader>v :tabedit
$MYVIMRC<CR>
" 配置文件
autocmd bufwritepost _vimrc source $MYVIMRC
" 設置文件格式
set fileformats=unix,dos,mac
" Template
autocmd! BufNewFile * silent! 0r
$VIM/vimfiles/skel/Template.%:e
" 指定備份文件目錄
set backupdir=F:\Bak
set backupskip=D:/Temp/*
" 取消代碼自動摺疊
autocmd! BufNewFile,BufRead * setlocal nofoldenable
" 打開/關閉代碼摺疊
nnoremap <space> za
" 優化大文件編輯
let g:LargeFile=10
" 自動加載文件
set autoread
set list!
set listchars=nbsp:¬,tab:┈┈,precedes:«,extends:»,trail:
hi NonText ctermfg=247 guifg=#a73111 cterm=bold gui=bold
hi SpecialKey ctermfg=77 guifg=#654321
augroup filetypedetect
au BufNewFile,BufRead
*.mxl setf mxl
augroup END
FROM:
http://yyq123.blogspot.com/2012/01/vim-vimrc.html