本文是Vi / Vim 初学者入门(系列文章)之一,请点击链接阅读更多关于 Vim 有关的文章。
vimrc究竟在哪儿呢?这个问题对一个vim的入门用户来说,可能实在不是个问题,你可能回答:”不就是 $HOME/.vimrc
吗?”。是的,这个答案正确,不过不是全部。在这篇文章中,易水会带你更深入的了解这个问题的答案。
首先,在 Linux 下的 Vim 中输入 :version
命令(可能你是使用 Linux 下的 vi 命令打开编辑器,不过在大多数 Linux 中,vi 命令打开的就是 Vim),我们略过不相关的内容,关于 vimrc 的显示如下(可能你的显示不完全和这里相同):
:version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jun 26 2017 11:44:34)
Included patches: 1-678
Compiled by Easwy Yang <easwy.......>
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
system gvimrc file: "$VIM/gvimrc"
user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
...
在上面,我们看到列出了几个 vimrc 文件,有一个系统的 vimrc 文件,还有用户的 vimrc 文件,以及系统和用户 gvimrc 文件。出于和vi兼容的目的,vim也支持vi的exrc配置文件。
接着,我们在 Windows 系统中输入 :version
命令,可以看到如下输出(我使用的是预编译的 Vim 8.0):
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Apr 23 2017 20:01:28)
MS-Windows 32-bit GUI version with OLE support
Included patches: 1-586
Compiled by mool@tororo
system vimrc file: "$VIM\vimrc"
user vimrc file: "$HOME\_vimrc"
2nd user vimrc file: "$HOME\vimfiles\vimrc"
3rd user vimrc file: "$VIM\_vimrc"
user exrc file: "$HOME\_exrc"
2nd user exrc file: "$VIM\_exrc"
system gvimrc file: "$VIM\gvimrc"
user gvimrc file: "$HOME\_gvimrc"
2nd user gvimrc file: "$HOME\vimfiles\gvimrc"
3rd user gvimrc file: "$VIM\_gvimrc"
比较一下上面两个 :version
命令的输出,我们发现:
– 在windows下,有两个可选的用户 vimrc 文件,一个是 $HOME\_vimrc
,另外一个是 $VIM\_vimrc
。 Vim 启动时,会先尝试执行系统的 vimrc 文件(通常此文件不存在),然后将按照上述顺序查找用户 vimrc,并使用所找到的第一个用户 vimrc 中的配置,忽略其余的用户 vimrc。
– 在Linux下使用的 vimrc 文件名为 .vimrc
,而在 Windows 下因为不支持以点(.)开头的文件名,vimrc 文件的名字使用 _vimrc
。不过,在Linux下,如果未找到名为 .vimrc
的文件,也会尝试查找名为 _vimrc
文件;而在 Windows 下也是这样,只不过查找顺序颠倒一下,如果未找到名为 _vimrc
的文件,会去查找 .vimrc
。
– 从这里可以看出,vimrc 的执行先于 gvimrc。所以我们可以把全部 vim 配置命令都放在 vimrc 中,不需要用 gvimrc。
对于vim初学者,如果不知道 $HOME
或者 $VIM
具体是哪个目录,可以在 vim 中用下面的命令查看:
:echo $VIM
:echo $HOME
Windows 版本的 Vim 在安装时,缺省会安装一个 $VIM/_vimrc
,你可以直接修改这个 _vimrc
,加入你自己的配置(使用 :e $VIM/_vimrc
即可打开此文件)。或者,你也可以在 Windows 中增加一个名为 HOME
的环境变量(控制面板
-> 系统
–> 高级
–> 环境变量
),然后把你的 vimrc 放在 HOME 环境变量所指定的目录中。从上面 :version
命令的输出看到,$HOME/_vimrc
如果存在,就会执行这个文件中的配置,从而跳过 $VIM/_vimrc
。
如果使用 vim -u filename
命令来启动 Vim,则会用你指定的 filename
作为 Vim 的配置文件(在调试你的 vimrc 时有用);如果用 vim -u NONE
命令启动 Vim,则不读取任何 vimrc 文件:当你怀疑你的 vimrc 配置有问题时,可以用这种方式跳过 vimrc 的执行。
更多关于 vimrc 的配置,参见易水所写的vim使用进阶系列文章。如果你想掌握更多关于 Vim 的技巧,可以阅读我与车文隆合译的Vim实用技巧一书,该书第二版已经由人民邮电出版社出版。
那个,这个 vim的配置文件,他的读取顺序是什么,最后安装了一个自动补全的插件(autocomplpop),好像把原来的自动缩进给覆盖了(不能根据语法自动对齐)
谢谢,学到不少。
感谢您提供这么好的教程。
哎,我现在刚刚开始学习linux嵌入式,一直想找一个 顺手的工具,之前很粗浅的使用了一段时间的vim,后来在别人的指导下学习 emacs。 感觉 emacs 还是太重了。 vim 更轻巧一些,命令格式也更加符合我的习惯。
再次谢谢博主啦~
very useful.thanks
@karl
答复在这里:
http://easwy.com/blog/archives/vi-tip-of-using-recording/
再请教一下:我想在.vimrc中设置一个宏,请vi启动的时候就有这个宏,应该怎么办?
@Peter
:help $VIM
你好,看了你的文章学到不少东西。
另外,我有个问题请教,在Windows下的gVim.exe启动的时候到哪里去找环境变量$VIM?
控制面板->系统–>高级–>环境变量,这里并没有定义。
easwy:
你好!
你的一系列的关于vim的文章对我的帮助太大了,谢谢你!