cygwinでのgitエディターとしてのgVim


8

私はmsysgitを使用していますが、gitエディターとしてgvimを使用したいと思います。

私はgit bashの代わりにcygwin bashを使用しています。

ランニング

$ /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe 

gvimを起動します。しかし、これをgitエディターとして設定した場合:

$ git config core.editor /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

そして私が得るコミットを実行します:

/cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: -c: line 0: syntax error near unexpected token `('

次に、必要に応じてエスケープされたバックスラッシュを追加します。

$ git config core.editor /cygdrive/c/Program\\\ Files\\\ \\\(x86\\\)/Vim/vim73/gvim.exe

これはまだ私に与えます:

/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: /cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: No such file or directory
error: cannot run /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: No such file or directory
error: There was a problem with the editor '/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe'.

実は、「実行できません」の後の文字列をコピーして貼り付けると、実行できます。Program Files(x86)のスペースまたは括弧のいずれかが原因であると思います(いったい何を考えていたのでしょうか?)。

cygwinは問題なく処理できるようなので、/ usr / local / binにシンボリックリンクを作成できると考えました。

$ git config core.editor /usr/local/bin/gvim

/ usr / local / bin / gvimがgvimを起動することを確認します。それでも、コミットを実行すると、次のようになります。

error: cannot spawn /usr/local/bin/gvim.exe: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim.exe'.

core.editorの設定を解除して試してみる

$ export GIT_EDITOR=/usr/local/bin/gvim.exe 

同じエラーが出ます。

このSOの答えは、スクリプトを使用してエディターを開くことを示唆しています。

/ usr / local / binからソフトリンクgvim.exeを削除し、

$ cat > gvim
#!/bin/sh
/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

$ chmod u+x gvim

私はスクリプトをテスト実行し、それが機能し、gvimが起動します。

$ gvim

残念ながら、コミットを実行するとエラーが発生します

$ git commit
error: cannot spawn /usr/local/bin/gvim: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim'.

gVimをgitエディターとして使用するにはどうすればよいですか?誰かがそれを試しましたか?私は間違いをしましたか?Linuxに関しては、初心者であることを認めなければなりません。


代わりにcygwin viを使用してみましたか?コマンドを試しましたwhich gvimか?
ソマントラ2011

どのgvimが/ usr / local / bin / gvimを出力するか(ソフトリンクまたはスクリプトが存在する場合のみ)。おそらく、gVimを使用する理由を明確に述べるべきでしょう。毎日使って、好きなように設定しています。他のものを使用する場合、2つのエディター設定を維持する必要があります。
ジョニー

rcファイルにシンボリックリンクまたはリポジトリを使用することを検討してください。
ソマントラ、2011

これは、cygwinシェルスクリプトではなく、バッチファイルで行う必要がある場合があります。また、WindowsベースのgVimとcgywinが$ HOMEを設定するものとの間のHOME環境変数の競合にも注意してください。
ヘプタイト2011

@ヘプタイト私もそれのためにバットファイルを作成しようとしました。運が悪い。私の質問に記載されているcannot spawnエラーが表示されます。そして、あなたは紛争について正しい。私はgvimではなくgitと競合していません。git config --globalはcygwinでcygwinホームに保存され、msysgitで同じはWindowsホームに保存されます。
ジョニー

回答:


6

git configは1つのレベルの引用符を削除するようですので、別のレベルを追加してください。これは私のために(別のエディタで)動作します:

git config core.editor "\" c:/ Program Files(x86)/Vim/vim73/gvim.exe \ ""

(パスを囲む引用符がエスケープされていることに注意してください。これにより、たとえばgit commitが "c:/ Program Files(x86)/Vim/vim73/gvim.exe"になるようにエディターが起動されるため、bashシェルに()を、これが意味すると考えているものとして解釈しようとしないでください。)


0

パス名にスペースを使用する場合は、通常、スペースを引用符で囲むことをお勧めします。これはあなたの問題を解決します:

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"

残念ながら違います。/ cygdrive / c / Program \ Files \(x86)/Vim/vim73/gvim.exe:/ cygdrive / c / Program Files(x86)/Vim/vim73/gvim.exe:No such file or directory error:cannot run / cygdrive / c / Program \ Files \(x86)/Vim/vim73/gvim.exe:そのようなファイルまたはディレクトリエラーはありません:エディター '/ cygdrive / c / Program \ Files \(x86)/ Vim /に問題がありましたvim73 / gvim.exe '。パスは正しいですが、/ cygdrive / c / Program \ Files \(x86)/Vim/vim73/gvim.exe
johnny

すみません、cygwinで試しましたが、cygwin-gitパッケージを使用しました。cygwinとmsysgitをどのように接続したか教えていただけますか?
p.vitzliputzli '09 / 09/15

私はmsysgitをインストールし、長い間git bashを使用していました。なぜcygwinを使い始めたのか正確には覚えていませんが、私がやったこと(実行)は、cygwin $ PATHにGitへのパス(/ cygdrive / c / Program Files(x86)/ Git / bin)を追加することです。
ジョニー

0
#!/bin/dash -e
if [ "${1#/}" != "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=$1
fi
exec gvim ${k+"$k"}
  1. パスがない場合、パスを渡さない

  2. パスが空の場合は、空のパスを渡します

  3. パスが相対パスの場合、そのまま渡します

  4. パスが絶対パスの場合、Windows形式に変換します

次に、これらの変数を設定します。

export EDITOR=gvim.sh
export GIT_EDITOR='dash /usr/local/bin/gvim.sh'
  1. EDITORを使用すると、スクリプトをGitで使用できます

  2. GIT_EDITORを使用すると、スクリプトでハブコマンドを操作できます

ソース

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.