返回

Vim 加载模式下的 /etc/vimrc 行为差异解析

Linux

Vim 中不同加载模式下的 /etc/vimrc 行为差异

问题:

在 Vim 中,使用 source /etc/vimrc 命令加载 /etc/vimrc 文件与直接启动 Vim 时加载该文件的方式不同。在启动 Vim 时,文件类型插件处于启用状态,但在使用 source 命令加载时,插件被禁用。

原因:

这种差异是由于 Vim 加载脚本的方式造成的。当启动 Vim 时,它会按照以下顺序加载脚本:

  1. 加载默认脚本(位于 $VIMRUNTIME/defaults.vim
  2. 加载用户脚本(位于 ~/.vimrc
  3. 加载系统脚本(位于 /etc/vimrc

然而,当使用 source 命令加载 /etc/vimrc 时,它只会加载该文件,而不会加载其他脚本。

解决方法:

要确保无论启动 Vim 的方式如何,文件类型插件都被禁用,可以在 /etc/vimrc 文件的底部添加以下行:

source /etc/vimrc.custom

其中,/etc/vimrc.custom 是包含文件类型插件设置的文件。这样,每次启动 Vim 或使用 source 命令加载 /etc/vimrc 时,文件类型插件都会被禁用。

深入探讨:

了解 Vim 的加载顺序对于理解不同加载模式下 /etc/vimrc 行为差异非常重要。Vim 8.0 及更高版本引入了 defaults.vim 文件,该文件在启动时加载并覆盖其他脚本中的设置。因此,如果存在 ~/.vimrc 文件(即使为空),defaults.vim 将不会加载。这可能会导致启动 Vim 时与使用 source 命令加载 /etc/vimrc 时行为不同。

结论:

通过理解 Vim 的加载顺序,可以控制在不同加载模式下加载的脚本。在 /etc/vimrc 文件中使用 source 命令可以确保脚本在启动 Vim 时和使用 source 命令加载时以一致的方式加载。

常见问题解答

1. 为什么存在加载顺序差异?

加载顺序差异是出于技术原因,以允许用户自定义 Vim 而又不覆盖系统默认设置。

2. 如何在启动 Vim 时加载 ~/.vimrc

/etc/vimrc 文件的底部添加以下行:

source ~/.vimrc

3. 如何查看 Vim 加载的脚本?

在 Vim 中运行以下命令:

:scriptnames

这将显示按加载顺序加载的所有脚本的列表。

4. 如何禁用 defaults.vim

/etc/vimrc~/.vimrc 文件中添加以下行:

let skip_defaults_vim = 1

5. 如何获得 Vim 的最新版本?

从官方 Vim 网站下载并安装最新版本。