default.vim 和 /etc/vim/vimrc 之间的区别

default.vim 和 /etc/vim/vimrc 之间的区别

$VIMRUNTIME/default.vim和 和有什么区别/etc/vim/vimrc

为什么$VIMRUNTIME/default.vim先启动?不应该/etc/vim/vimrc先离开吗?

(Debian 9)

答案1

/etc/vim/vimrc是由相应的软件包维护者(例如 Debian 人员)添加的系统范围默认 Vim 配置vim 通用APT 包)。它代表了发行版维护者对良好(且安全)默认值的看法。

长期以来,Vim 本身并没有提供任何默认配置;相反,它只是附带了一个示例(:help vimrc_example.vim)让个人用户开始他们的个人配置(即~/.vimrc)。许多人不喜欢 Vim 以保守的默认值开始(例如兼容性),并且“有用的”系统范围的配置也引起了混乱(因为 Vim 有如此多的配置可能性和灵活性),因此 Vim 8.0 的默认配置形式为defaults.vim曾是添加

您的问题暗示了对该配置的混淆。一般来说,如果默认设置不适合您,在您的用户中进行所有自定义~/.vimrc,并保留任何系统范围的配置。这些应该只进行无争议的更改(例如:syntax on),因此不应干扰,但大多数选项更改也可以由您的~/.vimrc.

从配置读取的顺序来看,:scriptnames显示按顺序读取的脚本,以及:help initialization有所有血淋淋的细节。

答案2

文件/etc/vim/vimrc是所谓的“系统”vimrc 文件(它应该在输出中如此列出:version。)

$VIMRUNTIME/defaults.vim是“默认”文件,仅在 Vim 8.0 中引入(至少,这是第一个包含该功能的非补丁版本。)

文件/etc/vim/vimrc由 Linux 发行版控制,因此 Debian 或 Red Hat 等将发布他们认为与您的发行版相关的 Vim 初始化。

文件defaults.vim自动加载仅当您没有用户 vimrc 文件时。因此,仅当您的用户缺少~/.vimrc~/.vim/vimrc文件时。如果您确实有这些文件之一,那么defaults.vim将会不是自动加载,尽管您可能想要这样做来自你的 vimrc。

系统vimrc文件是总是已加载并且始终加载第一的。 (好吧,除非你传递 Vim 命令行选项告诉它不要加载 vimrc 文件,例如vim -u NORC-u NONE,在这种情况下它不会加载。)

系统vimrc处理完后,就轮到你自己的vimrc文件了,或者defaults.vim如果你自己的vimrc文件不存在的话。

现在,这里有两个重要的警告!

首先,它defaults.vim可能已被您的发行版禁用(更像是绝育)。一些发行版(即 Debian)对 Vim 发布的文件不太满意,defaults.vim该文件将启用从以前版本升级的用户不期望的设置。

因此,通过让 Vimscript 代码检查是否已设置defaults.vim名为 name 的变量来解决此问题。skip_defaults_vim如果是的话,那么defaults.vim就会尽早退出,而你不会真正看到它的影响。 (请注意,该脚本仍将出现在 下:scriptnames,因为它确实要运行,所以它只是很早就完成了。)

由于之前唯一运行的是系统vimrc文件,所以这就是可以设置的defaults.vim地方。因此,请检查您的发行版是否设置了它,如果是,那么即使正在获取文件,skip_defaults_vim您也不会真正获得效果。defaults.vim

第二个警告,也是一个经常混淆的点,是当您第一次为用户创建新的 vimrc 文件时。然后你就会从加载所有设置defaults.vim变成没有任何设置。这在视觉上非常明显,因为它通常意味着您将不再启用语法突出显示,这几乎就在您的脸上,您可以很快注意到差异。

这里的建议是,当您第一次创建 vimrc 文件时,您应该defaults.vim从中获取源代码,这样您就可以保留其中的功能,然后您可以在以后添加自己的自定义内容。

您可以通过将这两行添加到 vimrc 文件的开头来做到这一点:

unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim

请注意,它也是 unsetting skip_defaults_vim,这意味着defaults.vim即使在已决定禁用该文件的效果的 Linux 发行版上,这也会激活设置。

Vim 附带的文件(作为模板提供,用于创建您自己的 vimrc)包括顶部的vimrc_example.vim一行。defaults.vim

有关更多信息,请参阅:

相关内容