當我從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