我似乎有两个不同的 Vim 环境。是什么原因造成的?

I seem to have two different Vim environments. What is causing this?

我正在尝试在Windows 10上设置开发环境。到目前为止,我已经安装了Vim和Cmder(完整版Git Windows)。

四处游玩,我注意到了一些我不理解的奇怪行为,但我觉得理解这一点很重要。

案例A

  1. 我打开 PowerShell
  2. 找到包含 vim.exe
  3. 的文件夹
  4. 运行 .\vim.exe
  5. Vim 弹出并显示默认屏幕(VIM - Vi IMproved,版本 8.1.1 等)
  6. 在正常模式下,我输入 :version 来检查版本号并查看我的 _vimrc 文件所在的位置
  7. Vim 给了我预期的输出

案例 B

  1. 我打开 Cmder 并打开一个新的 PowerShell 选项卡(我假设这让我可以访问 PowerShell 而不是默认的 cmd.exe,但如果我错了请纠正我。 )

  2. 现在有趣的地方来了 如果我完全按照案例 A 重复步骤 2-6,我会得到完全相同的结果。

但是: 如果不是定位存储 vim.exe 的文件夹,我只是输入 vim 并点击 Enter,它会再次打开 Vim,但这次它在底部有一个选项卡说 "unix"。见附图。

出于好奇,在正常模式下我输入 :version,就像在情况 A 中一样,但是这次我在版本部分得到了不同的日期、不同的选项选择和不同的 Unix -类似于 vimrc 文件的路径,现在 .vimrc 而不是 _vimrc

什么给了?我的猜测是 Cmder 自带的 Git for Windows 是在模拟 Unix 环境并访问为 Unix 编译的不同 Vim 版本?

如果这是真的,那么你能帮我理解这个 Windows/Unix 环境二元性吗?我现在是否有两个 HOME 文件夹、两个 vimrc 文件副本,以及两个谁知道还有什么的副本?模拟这个Unix环境的是什么-Cmder?

谢谢!

您安装了两个不同版本的 Vim,并且根据您启动它的环境,选择其中一个。 Git(作为最初在 Linux 上开发并为 Linux 开发的工具)通常会带来一组 Windows 端口。

您可以通过

从Vim中检查(分别)使用了哪些Vim二进制文件
:echo v:progpath

您是忍受这种重复还是尝试始终如一地使用一个 Vim 实例取决于您。看起来 Git 附带的 Vim 具有更多以 Unix 为中心的设置;最好保留它以避免互操作性问题。

您绝对不需要克隆整个 Vim 配置 - 只要您坚持使用 Unix 风格 (LF) 行尾,任何 Vim 都可以理解它。通过设置 HOME 环境变量(但这可能会影响其他程序!),您可以使 Vim 使用相同的位置。否则,您可以给一个 Vim 配置位置一个小的 .vimrc,它只是更正 'runtimepath',然后 :sources 来自另一个位置的 "real" vimrc。

我没有使用 Cmder 的经验,但我经常将 Git 用于 Windows。 Git for Windows 带有一些 Unix 实用程序,并使用 Cygwin,它是 运行 的 Unix 模拟器。 Vim 是其中之一,作为提交消息等的默认文本编辑器。所以它可能就是它。

我试图在我的机器上重现这个。但我无法重现您所看到的。尽管如此,我还是找到了你可能在第二种情况下使用的 Vim 的 vimrc 文件。 它在 <Cmder-dir>\vendor\git-for-windows\etc\vimrc.