vimrc 配置文件

很多人感觉 Vim 不如 IDE,通常是因为难看的界面和没那么方便的功能,而究其原因其实是因为他们都没有配好自己的 vimrc 文件,所有的 IDE 都有一个类似这样的文件,只是绝大多数情况下你都碰触不到,而学习 vimrc 则是你配置自己的 IDE 的一个开始。

快速配置

在学习 vimrc 之前,我们先来了解下怎样快速配置。

首先打开练习文件 Object.java,然后进入 command 模式

  1. :set number

回车后,你会发现在编辑器的左边出现了行号。

这是我们配置编辑器的第一步,我们可以在 command 模式下配置然后预览我们的配置结果,但是当你退出文件再进来,会发现刚才的配置已经失效了,它只在当前缓冲区生效,而想要让配置长久生效,就需要将配置信息放入 vimrc 文件中,这样每次打开 Vim 都会读取配置文件。

了解 vimrc

Vim 读取配置的默认路径为 ~/.vimrc,如果你的环境没有需要新建该文件

  1. $ touch ~/.vimrc

我们在文件中输入设置行号的命令

  1. $ vim ~/.vimrc
  2. set number

然后退出文件,重新打开 Object.java,会发现行号的配置又生效了。每次使用 Vim 重新打开文件,新加的配置就会生效。

重新加载 vimrc

现在我们要在加一些改动,你要关掉当前文件再打开 .vimrc 吗?没必要,还记得分割屏幕吗。

  1. :vsp ~/.vimrc

如此,我们可以一边编辑文件,一边修改配置了。

先加上这两行配置,并保存

  1. set cursorline "突出显示当前行"
  2. set cursorcolumn "突出显示当前列"

然后需要做在 Object.java 中生效,怎么做呢,退出然后重新进来?每次都这样你一定会烦死的,也会显得很蠢(虽然我曾经这样蠢了很久),我们有更好的方法。

在目标文件中执行如下命令就行了。

  1. :source $MYVIMRC

$MYVIMRC 在 Vim 环境中代表了 ~/.vimrc 的常量,这句话的意思就是重新加载配置文件,当然你也可以通过 :source ~/.vimrc 来实现。

常用的配置

  1. set nocompatible " 去掉对vi的兼容,让vim运行在完全模式下

set compatible 就是让 vim 关闭所有扩展的功能,尽量模拟 vi 的行为。但这样就不应用 vim 的很多强大功能,所以一般没有什么特殊需要的话(比如执行很老的 vi 脚本),都要在 vim 的配置开始,写上 set nocompatible,关闭兼容模式。由于这个选项是最最基础的选项,会连带很多其它选项发生变动(称作副作用),所以它必需是第一个设定的选项。

  1. syntax on " 开启语法高亮"

这个功能对开发尤其有用,Vim 本身是会对一些简单的关键词做高亮处理的,而很多插件对语法高亮也都依赖这个设置。

  1. set history=2003 " 记录 Vim 历史操作的条数

Vim 内的所有操作都会在一个 ~/.viminfo 中记录,该设置可以配置最多记录的条数。

  1. set autoread " 文件在vim外修改过自动重新载入
  2. au CursorHold,CursorHoldI * checktime

默认情况下,外部修改了当前打开的文件,Vim 是不会自动重新载入的,加上这两条配置,Vim 会定时检查是否有外部改动并重载,如果改动不及时,你也可以通过 :e 手动加载。

  1. set novisualbell "关掉可视化响铃警报
  2. set noerrorbells "关掉错误警报
  3. set visualbell t_vb= "关掉警报

闹人的报警声还是挺烦人的,可以关掉它。

  1. set tm=500
  2. set t_Co=256

显示 256 色,很多主题插件都需要打开它。

  1. filetype on " 开启文件类型检测
  2. filetype plugin on " 开启插件的支持
  3. filetype indent on " 开启文件类型相应的缩进规则

这个配置组非常有用,开启后 Vim 可以根据打开的文件格式显示不同的高亮、使用缩进等。不管是使用插件还是自己写插件对他非常依赖。你可以使用 :filetype 来查看当前文件是否开启文件检测

  1. " encoding
  2. set encoding=utf-8 " 打开文件时编码格式
  3. set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 "vim会根据该设置识别文件编码
  4. set fileformat=unix " 设置以unix的格式保存文件"
  5. set fileencoding=utf-8 " 在保存文件时,指定编码
  6. set termencoding=utf-8 " 终端环境告诉vim使用编码
  7. set ffs=unix,dos,mac " 在创建文件或写入时,这三种文件格式分别决定了行末要添加什么特殊字符,而在读入文件时,又分别决定了要从行末移去什么特殊字符。
  8. set formatoptions+=m
  9. set formatoptions+=B
  10. " 主题
  11. set background=dark " 配色主题的色系,注意,这不是什么背景色!dark 是暗色系,light 是亮色系。
  12. colorscheme desert " 配色主题的名称,:coloscheme 后键入<tab>可以自动补全 比较喜欢的desert,peachpuff,torte,elfload,slate
  13. " show
  14. set number " 显示行号
  15. set ruler " 显示当前光标行号和列
  16. set wrap " 设置折行 set nowrap 为不折行
  17. set sidescroll=1 " 默认设置set sidescroll=0之下,当光标到达屏幕边缘时,将自动扩展显示1/2屏幕的文本。通过使用set sidescroll=1设置,可以实现更加平滑的逐个字符扩展显示。
  18. set showcmd " 在屏幕右下角显示未完成的命令
  19. set showmode " 显示当前vim模式
  20. set showmatch " 显示匹配的括号
  21. set matchtime=1 " 设置showmatch的效果时间,默认500ms,现在是100ms
  22. set cursorline " 突出显示当前行
  23. set cursorcolumn " 突出显示当前列
  24. set colorcolumn=80 " 设置某一列高亮
  25. " search
  26. set smartcase "搜索时,如果输入大写,则严格按照大小写搜索,如果小写,并设置了ignorecase,则忽略大小写
  27. set ignorecase "搜索时忽略大小写"
  28. set incsearch "搜索时及时匹配搜索内容,需要回车确认
  29. set hlsearch "高亮搜索项"
  30. " tab
  31. set expandtab "将<tab>符号转变为<space>空格
  32. set smarttab "配合shiftwidth使用,如果设置该值,在行首键入<tab>会填充shiftwidth的数值,其他地方使用tabstop的数值,不设置的话,所有地方都是用shiftwidth数值
  33. " indent
  34. set autoindent "换行自动缩进
  35. set smartindent "缩进采用c语言风格
  36. set shiftround "在一般模式下键入>>整个缩进shiftwidth的长度,<<反向操作,== 可以与上一行对齐,插入模式下C-T和C-D也可以左右启动
  37. set shiftwidth=4 "缩进的空格数
  38. set tabstop=4 "键入<tab>的步长
  39. set softtabstop=4 " insert mode tab and backspace use 4 spaces
  40. " set mark column color
  41. hi! link SignColumn LineNr
  42. hi! link ShowMarksHLl DiffAdd
  43. hi! link ShowMarksHLu DiffChange
  44. " status line
  45. set statusline=%<%f\ %h%m%r%=%k[%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ %-14.(%l,%c%V%)\ %P
  46. set laststatus=2 " 底部显示两行状态栏"
  47. " select & complete
  48. set selection=inclusive "选择文本事,光标所在位置也会被选中
  49. set selectmode=mouse,key
  50. set scrolloff=5 "距离顶部和底部5行"
  51. set backspace=2 "任何情况允许使用退格键删除
  52. set mouse=a "启用鼠标"
  53. " 代码折叠
  54. set foldlevelstart=99 "默认不折叠"
  55. set foldmethod=indent "按照缩紧折叠"

剩下这些配置也都很有用,你可以尝试着一个个配置上对比效果。Vim 的配置千变万化,这些只是部分基本配置,基本没有两个人的 vimrc 文件是完全相同,人们会根据当前的学习进度和自己的环境配置不同的样式和功能,这也是 Vim 迷人的地方,构建自己的 IDE,谁不想呢。

记住,在这个环节需要我们勤用 :help 查看帮助文档,比如 :h showcmd 它的讲解绝对任何人都专业。

在对 vimrc 有了初步的了解后,以后我们会逐步学习各种高效的配置,让我们的 Vim 越来越得心应手。

2018-04-17 发布