这篇文章简单讲讲 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 版本确认的特性。下面按上面输出顺序一一简述一下:
system vimrc file
:这个是系统的配置文件,$VIM
环境变量在:version
中也输出来了,也可以通过:echo $VIM
查看,我这里是/usr/local/share/vim
。系统的配置文件在多用户管理时挺有用的,系统管理员可以为每个用户的 vim 配置可以使用这个 vimrc 文件。user vimrc file
:这个是用户自定义的配置文件,$HOME
就是家目录了,也就是~
,同样可以通过:echo $HOME
查看其绝对路径,我的系统是/home/ql
。一般情况下我们都是使用这个文件作为配置文件。2nd user vimrc file
:这个是第 2 个用户自定义的配置文件,这个文件的引入是由于一些类 unix 用户觉得单纯在$HOME
目录下创建一个 vimrc 文件作为配置文件,又将 vim 的插件等放在别的目录是对$HOME
目录的一种污染,所以就引入了第 2 个用户配置文件,用户可以将 vim 的一切配置都放在~/.vim/
目录下了,而且如果需要将 vim 的配置拷贝到另一个系统的话,拷贝~/.vim/
目录就可以了,比较方便。user exrc file
:.exrc
文件是 vi 的配置文件,不是 vim 的。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.
VIMINIT
环境变量:VIMINIT
变量是用作 Ex 命令行来执行的,Ex 模式和命令行模式有点像。可以将VIMINIT
当作是一条命令放在命令行中执行。譬如:
这样 vim 就会将 test 文件作为配置文件了。$ pwd /home/ql $ touch test # 创建测试配置文件 $ export VIMINIT=":source /home/ql/test" # 设置 shell 临时环境变量
- vim 用户配置文件:先查找
user vimrc file
,即~/.vimrc
文件,如果查找不到的话,由于用户可能使用了 MS-DOS 兼容文件系统,所以文件名也可能是~/_vimrc
。因此 vim 会尝试查找~/_vimrc
文件,如果这个文件也找不到,那么 vim 就会尝试查找2nd user vimrc file
。 EXINIT
环境变量:这个环境变量是 vi 的配置,不是 vim 的,vim 会以模拟 vi 的行为。user exrc file
:这个和EXINIT
一样,类似 vim 用户配置文件和VIMINIT
环境变量的关系。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 内核源码学习。