首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MSYS运行gvim -如何避免/更改MSYS环境变量?

从MSYS运行gvim -如何避免/更改MSYS环境变量?
EN

Stack Overflow用户
提问于 2013-05-18 16:45:11
回答 3查看 3.1K关注 0票数 2

当我从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

EN

回答 3

Stack Overflow用户

发布于 2013-05-18 17:23:30

我相信您可以像任何其他环境变量一样定义$HOME。

尝试将其添加到.vimrc的开头。

代码语言:javascript
复制
let $HOME="C:\Documents and Settings\username"
票数 0
EN

Stack Overflow用户

发布于 2016-03-14 12:08:44

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

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

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

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

代码语言:javascript
复制
gvim="/cygdrive/c/Program Files (x86)/Vim/vim74/gvim"
if [ -x "$gvim" ]; then
  alias gvim="HOME= SHELL= \"$gvim\""
fi
unset gvim
票数 0
EN

Stack Overflow用户

发布于 2018-10-02 07:31:27

我通过制作一个windows符号链接(Win 7或更高)实现了这一点。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16626683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档