得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

vim 配置文件加载顺序

想要定制自己的 vim,就需要了解一下它启动时会加载哪些配置文件,以及这些配置文件被加载的顺序

寻找配置文件

vim 启动时会寻找哪些配置文件路径的这一过程,可以通过 vim --version 或者打开 vim 后,输入 :version 查看

1
2
3
4
5
6
7
8
9
10
$ vim --verison
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled May 04 2023 10:24:44)
...
system vimrc file: "/etc/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/share/vim"
...

该版本的 vim 中,尝试加载了以下几个配置文件:

  1. system vimrc file:这个是系统的配置文件,路径是 /etc/vim/vimrc;系统的配置文件在多用户管理时挺有用的,系统管理员可以为每个用户的 vim 配置可以使用这个 vimrc 文件

  2. user vimrc file:这个是用户自定义的配置文件,$HOME 就是家目录了,也就是 ~;一般情况下使用这个文件作为配置文件

  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 就会使用这个文件作为配置文件

但要注意的是,并不是所有存在的配置文件均会被加载,相反,除了 system vimrc file 如果存在且不修改启动加载过程一定会被加载之外,其余的配置文件则是按照顺序进行寻找,找到并加载某一配置后就不会再继续加载后续的配置了

寻找的顺序是:环境变量 $VIMINIT ——> $HOME/.vimrc ——> 环境变量 $EXINIT ——> exrc 文件,并将找到的文件路径作为环境变量 $MYVIMRC 的值

如果环境变量 $MYVIMRC 已经设置,则直接使用该变量指向的文件作为配置文件不会进行寻找

加载哪些配置文件

但是,上面的内容似乎没有很好的回答「加载哪些配置文件」这个问题,只是了解了 vim 会寻找哪些配置文件,如果需要更进一步,明确当前环境上的 vim 启动时会加载哪些配置文件,按什么顺序又该如何

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ vim -V
chdir(/etc/vim)
fchdir() to previous dir
sourcing "/etc/vim/vimrc"
chdir(/usr/share/vim/vim90)
fchdir() to previous dir
line 23: sourcing "/usr/share/vim/vim90/debian.vim"
finished sourcing /usr/share/vim/vim90/debian.vim
continuing in /etc/vim/vimrc
finished sourcing /etc/vim/vimrc
chdir(/home/username)
fchdir() to previous dir
sourcing "$HOME/.vimrc"
...
finished sourcing $HOME/.vimrc
# 后续开始加载插件

be slow to promise and quick to perform.