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\usernameWindows ではの値ですが$HOME、MSYS では のような値に設定されますC:/msys/user name。そしてもちろん、Vim は を使用$HOMEして適切な初期化ファイルを見つけます。

がの代わりに のset shell?ように変更されたことにも気付きましたが、これが初期化の問題を修正するために重要でないことを願っています。shell=C:/msys/bin/shshell=C:\WINDOWS\system32\cmd.exe

通常の Windows 環境変数で gvim を実行する必要があります。少なくとも、指定したものなど、いくつかの重要なものを手動でオーバーライドできるようにする必要があり$HOMEます (つまり、ウィンドウの変更は気にしない$HOMEので、静的な値を使用しても問題ありません)。

vimrc で手動でリセットしようとしまし$HOMEたが、それでは手遅れです。

$HOME初期化の早い段階で、または追加のコマンド ライン パラメータとして指定するためのトリックはありますか?

または、別の方法でコマンドを実行する際のトリックはありますmsysか? シェルがどのように機能するかについてはほとんど何も知りませんC:/msys/bin/shが、入力しているコマンド (例: ) の可視環境を変更するいくつかの追加の引数を思いつくことができましたgvim.exe

---編集---
機能したソリューションを再投稿します (後のアイデアを実現します):

を実行する代わりにgvim.exe、コマンドを実行しますHOME="C:\Documents and Settings\username" gvim.exe

4

4 に答える 4

0

Cygwin (MSYS に似ています) を実行しているときに、同様の問題が発生しました。

私にとって最も簡単な解決策は、単にHOME環境変数を空の文字列に設定することでした。そうしないと、Cygwin のHOME値がUSERPROFILEGVim の Windows に追加され、正しく起動できなくなります。のフルパスを明示的に設定しないということは、同じではない可能性HOMEのある異なるシステムで同じ起動ファイルを使用できることを意味します。USERNAME

同様に、SHELL環境変数は Cygwin Bash から継承しないでください。shellこれにより、または を介し​​て外部プログラムを実行するとエラーが発生し!ます。繰り返しますが、Vim はそれが何であるべきかを判断するのに十分賢いので、これを空の変数に設定します。

私の.bashrcでは、Windows を実行するための次のエイリアスを設定しました。このエイリアスは、gvimGVim を起動し、HOMESHELL変数を空の文字列に設定します – そのコマンドだけです。

gvim="/cygdrive/c/Program Files (x86)/Vim/vim74/gvim"
if [ -x "$gvim" ]; then
  alias gvim="HOME= SHELL= \"$gvim\""
fi
unset gvim
于 2016-03-14T12:08:44.877 に答える
0

他の環境変数と同じように $HOME を定義できると思います。
これを の先頭に追加してみてください.vimrc

let $HOME="C:\Documents and Settings\username"
于 2013-05-18T17:23:30.053 に答える