vim 使用系列(三)-- 配置文件加载顺序

这篇文章简单讲讲 ubuntu 下 vim 的配置文件,其他 unix/类 unix 系统应该也是一样的。vim 启动之后将会自动读取它的配置文件。vim 中的配置文件有几种类型,可以通过vim --version查看,或者打开 vim,然后键入:version 查看,如我安装的 vim 输出如下:

# 打开 vim,键入 :version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Mar 18 2021 01:10:23)
...
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/local/share/vim"
 f-b for $VIMRUNTIME: "/usr/local/share/vim/vim82"
...

如前述,vim 有几种类型,不同 vim 版本输出还不一样,像2nd user vimrc file是在 7.3 版本引入,7.4 版本确认的特性。下面按上面输出顺序一一简述一下:

  1. system vimrc file:这个是系统的配置文件,$VIM环境变量在:version中也输出来了,也可以通过:echo $VIM查看,我这里是/usr/local/share/vim。系统的配置文件在多用户管理时挺有用的,系统管理员可以为每个用户的 vim 配置可以使用这个 vimrc 文件。
  2. user vimrc file:这个是用户自定义的配置文件,$HOME就是家目录了,也就是~,同样可以通过:echo $HOME查看其绝对路径,我的系统是/home/ql。一般情况下我们都是使用这个文件作为配置文件。
  3. 2nd user vimrc file:这个是第 2 个用户自定义的配置文件,这个文件的引入是由于一些类 unix 用户觉得单纯在$HOME目录下创建一个 vimrc 文件作为配置文件,又将 vim 的插件等放在别的目录是对$HOME目录的一种污染,所以就引入了第 2 个用户配置文件,用户可以将 vim 的一切配置都放在~/.vim/目录下了,而且如果需要将 vim 的配置拷贝到另一个系统的话,拷贝~/.vim/目录就可以了,比较方便。
  4. user exrc file.exrc文件是 vi 的配置文件,不是 vim 的。
  5. defaults file:vim 默认的配置文件,当以上的 vim 配置文件都找不到时,vim 就会使用这个文件作为配置文件。

vim 中有这么多的配置文件,到底使用哪个呢?默认情况下(即以vim filename方式启动 vim),vim 8.2 会先尝试读取system vimrc file文件,如果有先加载系统配置文件,然后按以下顺序查找初始化选项,要注意的是,当 vim 找到其中一个就会停止查找:

The files are searched in the order specified above and only the first
one that is found is read.

  1. VIMINIT环境变量:VIMINIT变量是用作 Ex 命令行来执行的,Ex 模式和命令行模式有点像。可以将VIMINIT当作是一条命令放在命令行中执行。譬如:
    $ pwd
    /home/ql
    $ touch test # 创建测试配置文件
    $ export VIMINIT=":source /home/ql/test" # 设置 shell 临时环境变量
    
    这样 vim 就会将 test 文件作为配置文件了。
  2. vim 用户配置文件:先查找user vimrc file,即~/.vimrc文件,如果查找不到的话,由于用户可能使用了 MS-DOS 兼容文件系统,所以文件名也可能是~/_vimrc。因此 vim 会尝试查找~/_vimrc文件,如果这个文件也找不到,那么 vim 就会尝试查找2nd user vimrc file
  3. EXINIT环境变量:这个环境变量是 vi 的配置,不是 vim 的,vim 会以模拟 vi 的行为。
  4. user exrc file:这个和EXINIT一样,类似 vim 用户配置文件和VIMINIT环境变量的关系。
  5. defaults file:最后如果上述都找不到的话,那么就加载默认配置文件。

当上述文件(除了加载的是默认文件)加载启动后,vim 会设置一个叫MYVIMRC的环境变量。当然,这个设置的前提是 shell 中没有设置MYVIMRC环境变量。上述 5 个初始化选项的内容都有可能覆盖系统配置文件的设置。

具体的,vim 启动之后会加载哪些文件可以通过:scriptnames查看,像我通过defaults file启动 vim,:scriptnames输出如下:

  1: /usr/local/share/vim/vimrc
  2: /usr/local/share/vim/vim82/defaults.vim
  3: /usr/local/share/vim/vim82/filetype.vim
  4: /usr/local/share/vim/vim82/ftplugin.vim
  5: /usr/local/share/vim/vim82/indent.vim
  6: /usr/local/share/vim/vim82/syntax/syntax.vim
  7: /usr/local/share/vim/vim82/syntax/synload.vim
  8: /usr/local/share/vim/vim82/syntax/syncolor.vim
  9: /usr/local/share/vim/vim82/plugin/getscriptPlugin.vim
 10: /usr/local/share/vim/vim82/plugin/gzip.vim
 11: /usr/local/share/vim/vim82/plugin/logiPat.vim
 12: /usr/local/share/vim/vim82/plugin/manpager.vim
 13: /usr/local/share/vim/vim82/plugin/matchparen.vim
 14: /usr/local/share/vim/vim82/plugin/netrwPlugin.vim
 15: /usr/local/share/vim/vim82/plugin/rrhelper.vim
 16: /usr/local/share/vim/vim82/plugin/spellfile.vim
 17: /usr/local/share/vim/vim82/plugin/tarPlugin.vim
 18: /usr/local/share/vim/vim82/plugin/tohtml.vim
 19: /usr/local/share/vim/vim82/plugin/vimballPlugin.vim
 20: /usr/local/share/vim/vim82/plugin/zipPlugin.vim

从上述输出可见确实是先加载系统配置文件,然后加载 defaults.vim,之后那些.vim文件是默认配置文件里的一些设置引起的文件加载。(我的系统配置文件是我自己创建的一个空白文件)

关于启动时配置文件的更多信息可以通过:help startup查看。
公众号
更多好玩的内容欢迎关注我的公众号~
公众号主要介绍一些 linux 上的效率工具,C 语言, linux 咨询以及 linux 内核源码学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值