VIM学习笔记 配置文件(vimrc)

在vim启动过程中,首先将查找配置文件并执行其中的命令。而这些初始化文件一般有vimrc、gvimrc和exrc三种。

利用:version命令,可以得到配置文件的详细信息。

version-vimrc

注意:如果执行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配置文件内容,供各位参考:

  1. set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感  
  2.   
  3. set nu " 显示行号  
  4. set ruler  
  5. set rulerformat=%55(%{strftime('%a\ %b\ %e\ %I:%M\ %p')}\ %5l,%-6(%c%V%)\ %P%)  
  6. set guioptions+=b  
  7. set guioptions-=T  
  8.   
  9. set paste  
  10. "set clipboard=unnamed " 让Vim和Win共用剪贴板  
  11.   
  12. set cursorline cursorcolumn  
  13.   
  14. syntax enable " 打开语法高亮  
  15. syntax on " 允许按指定主题进行语法高亮,而非默认高亮主题  
  16. colorscheme xoria256 " 指定配色方案  
  17.   
  18. set showcmd " 在命令行显示当前输入的命令  
  19.   
  20. set langmenu=en_US " 将菜单和信息设置为英文  
  21. let $LANG = 'en_US'  
  22. source $VIMRUNTIME/delmenu.vim  
  23. source $VIMRUNTIME/menu.vim  
  24.   
  25. set fileencoding=utf-8 " 设置多编码处理  
  26. set encoding=utf-8  
  27. set tenc=utf-8  
  28. set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1  
  29. "language message zh_CN.UTF-8  
  30.   
  31. filetype on " 开启文件类型侦测  
  32. filetype plugin on " 根据侦测到的不同类型加载对应的插件  
  33.   
  34.   
  35. if has("autocmd") && exists("+omnifunc")  
  36. autocmd Filetype *  
  37. \ if &omnifunc == "" |  
  38. \ setlocal omnifunc=syntaxcomplete#Complete |  
  39. \ endif  
  40. endif  
  41.   
  42. set laststatus=2 " 设置状态栏  
  43. 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*]  
  44. "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]  
  45.   
  46. function! InsertStatuslineColor(mode)  
  47.   if a:mode == 'i'  
  48.     hi statusline guibg=peru  
  49.   elseif a:mode == 'r'  
  50.     hi statusline guibg=blue  
  51.   else  
  52.     hi statusline guibg=black  
  53.   endif  
  54. endfunction  
  55.   
  56. au InsertEnter * call InsertStatuslineColor(v:insertmode)  
  57. au InsertLeave * hi statusline guibg=orange guifg=white  
  58. hi statusline guibg=black  
  59.   
  60. hi User1 guifg=gray  
  61. hi User2 guifg=red  
  62. hi User3 guifg=white  
  63.   
  64. set winaltkeys=no  
  65.   
  66. " map  
  67. nmap <tab> V>  
  68. nmap <s-tab> V<  
  69. vmap <tab> >gv  
  70. vmap <s-tab> <gv  
  71. " 打开另存为对话框  
  72. map <F2> <Esc>:browse saveas<CR>  
  73. " 使用NERDTree插件查看工程文件  
  74. nmap <F3> :NERDTreeToggle planning<CR>  
  75. " 启用/禁止折行  
  76. nmap <silent> <F5> <Esc>:call ToggleWrap()<CR>  
  77. " 显示/禁止行列光标  
  78. nmap <silent> <F6> <Esc>:call ToggleCursor()<CR>  
  79. " 新建标签页  
  80. map <F10> <Esc>:tabnew<CR>  
  81. " 显示/禁止查找高亮度  
  82. nmap <silent> <A-f> <Esc>:call ToggleHLSearch()<CR>  
  83.   
  84. function! ToggleWrap()  
  85.      if &wrap  
  86.           set nowrap  
  87.      else  
  88.           set wrap  
  89.      endif  
  90. endfunction  
  91.   
  92. function! ToggleHLSearch()  
  93.      if &hls  
  94.           set nohls  
  95.      else  
  96.           set hls  
  97.      endif  
  98. endfunction  
  99.   
  100. function! ToggleCursor()  
  101.      if &cursorcolumn  
  102.           set nocursorline nocursorcolumn  
  103.      else  
  104.           set cursorline cursorcolumn  
  105.      endif  
  106. endfunction  
  107.   
  108.   
  109. let mapleader=";" " 定义快捷键的前缀,即<Leader>  
  110. nmap <leader>v :tabedit $MYVIMRC<CR>  
  111.   
  112. " 配置文件  
  113. autocmd bufwritepost _vimrc source $MYVIMRC  
  114.   
  115. " 设置文件格式  
  116. set fileformats=unix,dos,mac  
  117.   
  118. " Template  
  119. autocmd! BufNewFile * silent! 0r $VIM/vimfiles/skel/Template.%:e  
  120.   
  121. " 指定备份文件目录  
  122. set backupdir=F:\Bak  
  123. set backupskip=D:/Temp/*  
  124.   
  125. " 取消代码自动折叠  
  126. autocmd! BufNewFile,BufRead * setlocal nofoldenable  
  127. " 打开/关闭代码折叠  
  128. nnoremap <space> za  
  129.   
  130. " 优化大文件编辑  
  131. let g:LargeFile=10  
  132.   
  133. " 自动加载文件  
  134. set autoread  
  135.   
  136. set list!  
  137. set listchars=nbsp:¬,tab:┈┈,precedes:«,extends:»,trail:™  
  138. hi NonText ctermfg=247 guifg=#a73111 cterm=bold gui=bold  
  139. hi SpecialKey ctermfg=77 guifg=#654321  
  140.   
  141. augroup filetypedetect  
  142.    au BufNewFile,BufRead *.mxl setf mxl  
  143. augroup END  
posted @ 2016-05-21 09:38  贺秋雨  阅读(673)  评论(0编辑  收藏  举报