当我从MSYS运行gvim时,初始化过程中会出错。也就是说,gvim找不到'C:\Documents and Settings\username\vimfiles‘中的初始化文件。
具体来说,gvim在初始化期间报告错误E117: Unknown function: pathogen#infect,因此它从未找到autoload\pathogen.vim。执行:scriptnames还确认没有运行来自vimfiles\的任何安装文件。
我想我已经试过为什么出问题了。启动MSYS时,MSYS继承windows环境变量,但将其中一些变量更改为它的自定义值。C:\Documents and Settings\username是$HOME在Windows中的值,但MSYS将其设置为类似于C:/msys/user name的内容。当然,Vim使用$HOME查找正确的初始化文件。
我还注意到set shell?已经变成了类似于shell=C:/msys/bin/sh而不是shell=C:\WINDOWS\system32\cmd.exe的东西,但是我希望这对于解决初始化问题并不重要。
我需要使用普通的windows环境变量运行gvim。至少,我需要能够手动覆盖一些重要的内容,比如$HOME,以实现我指定的内容(也就是说,我不关心windows $HOME的更改,所以使用静态值是可以的)。
我试图在vimrc中手动重置$HOME,但到那时已经太晚了。
在初始化过程中早期指定$HOME,还是作为额外的命令行参数?
或者,用不同的方式从msys运行命令有什么窍门吗?我几乎不知道shell C:/msys/bin/sh是如何工作的,但是我可以设想一些额外的参数来改变您正在键入的命令(例如gvim.exe)的visibile环境。
--编辑--
重新发布起作用的解决方案(它实现了后面的想法):
而不是运行gvim.exe,而是运行命令HOME="C:\Documents and Settings\username" gvim.exe
发布于 2013-05-18 17:23:30
我相信您可以像任何其他环境变量一样定义$HOME。
尝试将其添加到.vimrc的开头。
let $HOME="C:\Documents and Settings\username"发布于 2016-03-14 12:08:44
在运行Cygwin时,我遇到了类似的问题(类似于MSYS)。
对我来说,最简单的解决方案是简单地将HOME环境变量设置为空字符串。否则,Cygwin HOME值将被附加到GVim中的USERPROFILE中,并且它将无法正确启动。不显式设置HOME的完整路径意味着我可以在不同的系统上使用相同的启动文件,而USERNAME可能不是相同的。
同样,SHELL环境变量不应该从Cygwin继承。这将导致运行shell或通过!的外部程序时出现错误。同样,我将它设置为一个空变量,因为Vim足够聪明,可以确定它应该是什么。
在我的.bashrc中,我为运行gvim设置了以下别名,该别名启动GVim,并将HOME和SHELL变量设置为空字符串--仅用于该命令。
gvim="/cygdrive/c/Program Files (x86)/Vim/vim74/gvim"
if [ -x "$gvim" ]; then
alias gvim="HOME= SHELL= \"$gvim\""
fi
unset gvim发布于 2018-10-02 07:31:27
我通过制作一个windows符号链接(Win 7或更高)实现了这一点。
通过符号链接,您甚至可以让vim和gvim使用相同的配置和插件。
https://stackoverflow.com/questions/16626683
复制相似问题