web-dev-qa-db-ja.com

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

私はmsysgitを使用しており、gitエディターとしてgvimを使用したいと考えています。

Gitbashの代わりにcygwinbashを使用しています。

ランニング

$ /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はそれを問題なく処理しているように見えるので、$ PATHにあり、設定されているように、たとえば/ 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回答 スクリプトを使用してエディターを開くことをお勧めします。

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

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

$ chmod u+x gvim

スクリプトをテスト実行すると、動作し、gvimが起動します。

$ gvim

残念ながら、commitを実行すると、エラーが発生します

$ 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に関しては、初心者であることを認めなければなりません。

8
johnny

git configは、あるレベルの引用符を削除しているように見えるので、別のレベルを追加します。これは私にとってはうまくいきます(別のエディターで):

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

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

6
Legolas

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

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"
0
p.vitzliputzli
#!/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を使用すると、スクリプトを操作できます ハブコマンド

ソース

0
Steven Penny