2

当我gvim从 MSYS 运行时,初始化期间出现问题。即,gvim找不到 ' 中的初始化文件C:\Documents and Settings\username\vimfiles

【具体是gvimE117: Unknown function: pathogen#infect在初始化的时候报错,所以从来没有找到autoload\pathogen.vim. 这样做:scriptnames还确认没有vimfiles\运行任何安装文件。]

我想我已经调试出了为什么会出错。当您启动 MSYS 时,MSYS shell 会继承 windows 环境变量,但会将其中的一些更改为它的自定义值。 C:\Documents and Settings\username$HOMEWindows 中的值,但 MSYS 将其设置为C:/msys/user name. 当然,Vim$HOME用来查找正确的初始化文件。

我还注意到set shell?已更改为类似shell=C:/msys/bin/sh而不是shell=C:\WINDOWS\system32\cmd.exe,但我希望这对于解决初始化问题并不重要。

我需要使用普通的 windows 环境变量运行 gvim。至少我需要能够手动覆盖一些重要的$HOME东西,比如我指定的东西(即,我不关心我的窗口$HOME会改变,所以使用静态值很好)。

我试图$HOME在我的 vimrc 中手动重置,但到那时为时已晚。

$HOME在初始化期间早期指定或作为额外的命令行参数是否有一些技巧?

或者,从不同的地方运行命令是否有一些技巧msys?我对 shell 的工作原理几乎一无所知,但我可以设想一些额外的参数来改变您正在输入C:/msys/bin/sh的命令(例如)的可见环境。gvim.exe

---编辑---
重新发布有效的解决方案(它实现了后来的想法):

而不是运行gvim.exe,运行命令HOME="C:\Documents and Settings\username" gvim.exe

4

4 回答 4

2

bash和其他 UNIX shell 中,您可以执行以下操作:

$ HOME='/path/to/dir' gvim

临时设置$HOME为不同的值。

我承认我对 Windows 命令行一点也不熟悉,但可能值得一试。

于 2013-05-20T16:22:15.803 回答
0

我相信您可以像定义任何其他环境变量一样定义 $HOME。
尝试将此添加到您的.vimrc.

let $HOME="C:\Documents and Settings\username"
于 2013-05-18T17:23:30.053 回答
0

运行 Cygwin(类似于 MSYS)时,我遇到了类似的问题。

对我来说最简单的解决方案是简单地将HOME环境变量设置为空字符串。否则,CygwinHOME值将被附加到USERPROFILEGVim 中的 Windows 中,并且无法正确启动。不显式设置完整路径HOME意味着我可以在不同的系统上使用相同的启动文件,其中USERNAME可能不一样。

同样,SHELL环境变量不应继承自 Cygwin Bash。这会导致通过 运行shell或外部程序时出错!。同样,我将它设置为一个空变量,因为 Vim 足够聪明,可以弄清楚它应该是什么。

在我的.bashrc中,我为运行 Windows 设置了以下别名,该别名gvim启动 GVim,其中HOMESHELL变量设置为空字符串——仅用于该命令。

gvim="/cygdrive/c/Program Files (x86)/Vim/vim74/gvim"
if [ -x "$gvim" ]; then
  alias gvim="HOME= SHELL= \"$gvim\""
fi
unset gvim
于 2016-03-14T12:08:44.877 回答
0

我通过创建一个 Windows 符号链接(Win 7 或更高版本)来实现这一点。

通过符号链接,您甚至可以制作vimgvim使用相同的配置和插件。

于 2018-10-02T07:31:27.737 回答