gVim como editor git sob cygwin

8

Eu uso o msysgit e gostaria de ter o gvim como meu editor git.

Eu uso o bash do cygwin em vez do git bash.

Rodando

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

inicia o gvim. Mas se eu definir isso como git editor:

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

e executo commit eu recebo:

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

Em seguida, adiciono barras invertidas de escape quando necessário:

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

Isso ainda me dá:

/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'.

O problema é que eu posso copiar a string depois de "cannot run" e colá-la e ela é executada. Eu acho que isso poderia ser causado por espaços ou parênteses em Arquivos de Programas (x86) (que diabos eles estavam pensando?).

Como o cygwin parece lidar com isso ok, imaginei que poderia criar um link simbólico em / usr / local / bin, como é no meu $ PATH e definido

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

Eu confirmo que / usr / local / bin / gvim inicia o gvim. Ainda assim, executar um commit me dá:

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'.

Desativando o core.editor e tentando

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

me dá o mesmo erro.

Este Então responda sugerindo que eu use um script para abrir o editor.

Eu removi o link macio gvim.exe de / usr / local / bin e

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

$ chmod u+x gvim

Eu testo o script, ele funciona, o gvim começa.

$ gvim

Infelizmente quando executo o commit, recebo um erro

$ 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'.

O que posso fazer para usar o gVim como editor git? Alguém já tentou isso? Eu cometi erros? Devo admitir ser um novato quando se trata de linux.

    
por johnny 14.09.2011 / 19:56

3 respostas

6

git config parece remover um nível de aspas, então adicione outro. Isso funciona para mim (com outro editor):

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

(Observe as citações de escape em torno do caminho, isso faz com que o editor seja iniciado sempre, por exemplo, git commit seja "c: / Arquivos de Programas (x86) /Vim/vim73/gvim.exe", portanto, com aspas que informam bash shell para não tentar interpretar o () como qualquer coisa que ele ache que isso signifique.

    
por 14.03.2012 / 11:42
0

Ao trabalhar com espaços em nomes de caminho, geralmente é uma boa ideia encapsulá-los entre aspas. Isso resolverá seu problema:

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"
    
por 15.09.2011 / 00:39
0
#!/bin/dash -e
if [ "${1#/}" != "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=$1
fi
exec gvim ${k+"$k"}
  1. Se não houver caminho, não passe por nenhum caminho

  2. Se o caminho estiver vazio, passe o caminho vazio

  3. Se o caminho for relativo, passe como está

  4. Se o caminho for absoluto, converta para o formato do Windows

Então eu configuro essas variáveis:

export EDITOR=gvim.sh
export GIT_EDITOR='dash /usr/local/bin/gvim.sh'
  1. EDITOR permite que o script funcione com o Git

  2. GIT_EDITOR permite que o script funcione com os comandos do Hub

Fonte

    
por 29.12.2016 / 01:31

Tags