在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配置文件内容,供各位参考:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set nu " 显示行号
set ruler
set rulerformat=%55(%{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*%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
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