当我从MSYS运行gvim
时,在初始化期间出现问题。即,gvim
找不到“C:\Documents and Settings\username\vimfiles
。
[具体来说,gvim在初始化期间报告错误E117: Unknown function: pathogen#infect
,因此它从未找到autoload\pathogen.vim
。执行:scriptnames
也会确认vimfiles\
中没有任何设置文件正在运行。]
我想我已经调试了它出错的原因。当您启动MSYS时,MSYS shell继承了Windows环境变量,但将其中一些更改为其自定义值。 C:\Documents and Settings\username
是Windows中$HOME
的值,但MSYS将其设置为C:/msys/user name
。当然,Vim使用$HOME
来查找正确的初始化文件。
我还注意到set shell?
已更改为shell=C:/msys/bin/sh
而不是shell=C:\WINDOWS\system32\cmd.exe
,但我希望这对修复初始化问题并不重要。
我需要使用正常的Windows环境变量运行gvim。至少我需要能够手动覆盖一些重要的,如$HOME
到我指定的东西(即,我不关心我的窗口$HOME
更改,所以使用静态值是好的)。
我尝试在我的vimrc中手动重置$HOME
,但到那时为时已晚。
是否有一些技巧可以在初始化期间尽早指定$HOME
,或者作为额外的命令行参数?
或者,是否有一些以msys
运行命令的技巧不同?我几乎不知道shell C:/msys/bin/sh
是如何工作的,但是我可以设想一些额外的参数来改变你输入的命令的可见环境(例如gvim.exe
)。
--- ---编辑
重新发布有效的解决方案(它实现了后来的想法):
运行命令gvim.exe
HOME="C:\Documents and Settings\username" gvim.exe
答案 0 :(得分:2)
在bash
和其他UNIX shell中,您可以执行以下操作:
$ HOME='/path/to/dir' gvim
暂时将$HOME
设置为其他值。
我承认我对Windows命令行并不熟悉,但可能值得一试。
答案 1 :(得分:0)
我相信你可以像任何其他环境变量一样定义$ HOME
请尝试将此添加到.vimrc
。
let $HOME="C:\Documents and Settings\username"
答案 2 :(得分:0)
我在运行Cygwin时遇到了类似的问题(类似于MSYS)。
对我来说最简单的解决方案是将HOME
环境变量设置为空字符串。否则,Cygwin HOME
值将附加到GVim中的Windows USERPROFILE
,并且无法正确启动。未明确设置HOME
的完整路径意味着我可以在USERNAME
可能不同的不同系统上使用相同的启动文件。
同样,SHELL
环境变量不应继承自Cygwin Bash。通过shell
运行!
或外部程序时,会出现错误。再次,我将此设置为一个空变量,因为Vim足够聪明,可以弄清楚它应该是什么。
在我的.bashrc
中,我为运行Windows 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
答案 3 :(得分:0)
我通过建立Windows符号链接(Win 7或更高版本)来实现这一目标。
通过符号链接,您甚至可以使casasslide
和vim
使用相同的配置和插件。