_vimrc him home directory override _vimrc in $VIM

_vimrc him home directory overrides _vimrc in $VIM

在 Linux 上,当我创建一个 ~/.vimrc 文件时,它会扩展系统设置,因为它运行我的 ~/.vimrc 文件中的命令而不更改任何设置不在我的文件中。

在 Windows 上 %HOMEPATH%\_vimrc 文件似乎覆盖了其他设置文件,因为即使添加一个空白文件也会完全改变 vim.

的行为

这是 Windows 上的预期行为吗?如果我想扩展它们,是否需要将其他设置文件复制到我的主目录中?

这就是 Vim 的工作原理:如果您没有 vimrc,它会加载 $VIMRUNTIME/defaults.vim;如果你有那么它没有。

你在 Linux 上的问题是什么,你应该更清楚。也许是系统的/etc/vimrc,也许是Neovim等

如果您想从 defaults.vim 添加设置,只需执行 runtime defaults.vim

Vim 版本 8 及更高版本(可能是您正在使用的版本)附带一个 defaults.vim 文件,每当找不到用户 vimrc 文件时都会使用该文件。 defaults.vim 文件启用文件类型检测和语法突出显示,以及其他被认为对所有或大多数 Vim 用户有用的设置。有关详细信息,请参阅 :help defaults.vim

所以这就是您在 Windows 上看到的内容,您从官方网站安装 Vim 软件包并获得默认的 Vim 行为。为了向后兼容,defaults.vim 行为仅在您根本没有用户 vimrc 文件 (%HOMEPATH%\_vimrc) 或明确包含它时才会发生。

建议在启动新的 vimtex 文件时显式加载它,顶部两行:

unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim

你可能在 Linux 上看不到这个的原因是一些 Linux 发行版(即 Debian,可能 Ubuntu 继承了许多 Debian 软件包)决定他们不喜欢defaults.vim 行为,特别是如果用户 vimrc 文件存在,则不会启用的部分。 (这是可以理解的,当您创建一个空的 vimrc 文件并且 Vim 突然表现不同并且很多东西被禁用时,您已经看到它带来的混乱!)

所以他们发布了一个系统 vimrc 文件 /etc/vimrc,它完成了 defaults.vim 文件所做的许多事情(例如启用文件类型检测和语法高亮显示),然后禁用 defaults.vim完全行为(通过设置 skip_defaults_vim 变量。)所以在这些发行版中你不会得到 defaults.vim 行为 除非你明确地包含它(并且只有当你首先取消禁用它的变量。)另一方面,您总是从发行版提供的系统 vimrc 文件中获得相似或等效的设置。

我的建议是在 vimrc 文件中启用 defaults.vim 行为,这适用于所有平台和所有 Linux 发行版。它还包括一些有用的设置,这些设置在禁用 defaults.vim 行为的 Linux 发行版的 /etc/vimrc 中不存在,因此它在那里也可能有用。