当我从MSYS运行gvim
时,初始化过程中出现错误。即,gvim
找不到'C:\Documents and Settings\username\vimfiles
中的初始化文件。从MSYS运行gvim ---如何避免/更改MSYS环境变量?
[具体而言,gvim在初始化期间报告错误E117: Unknown function: pathogen#infect
,所以它从未找到autoload\pathogen.vim
。做:scriptnames
也确认没有任何来自vimfiles\
的设置文件运行。]
我想我已经调试了它为什么出错。当您启动MSYS时,MSYS外壳会继承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
您是否尝试在'msys'用作配置文件时更改'$ HOME'的值?像'export $ HOME =“C:\ Documents and Settings \ username”'。 – romainl
是的,如果'HOME'预先设置正确,gvim将从msys工作。 (虽然没有'$',语法是export HOME =“C:\ Documents and Settings \ username”)。但正如我所说的,我需要一种方法,使'gvim.exe'能够在不改变shell的全局'HOME'的情况下看到'HOME'的正确值。有没有办法只为一个命令“输出”? – Ein
我对Windows命令行的了解*非常接近于'0',但是在'* sh'中我可以执行'$ HOME ='/ path/to/dir'vim filename'。不过,要小心这种方法,因为'$ HOME'被设置为与默认值不同的位置,除非将它们放在新的'$ HOME'中,否则Vim将不会看到你的'_vimrc'或'vimfiles'。另外,由于新的'$ HOME',使用'msys'提供的命令可能更难甚至不可能。我会说“复制你的文件或使用符号链接”。 – romainl