Git falha ao iniciar o Vim no Cygwin

5

Eu tenho o Git trabalhando com o Vim em um ambiente Powershell no meu laptop de trabalho (Windows 7). Ele aparece quando eu cometo ou uso o meu git vimdiff alias.

Eu tentei a mesma configuração no Cygwin (sendo um cara do Unix de coração), mas quando digito git commit ou git vimdiff , o Vim não aparece; aparentemente, no entanto, o Git está esperando no Vim porque a ação nunca é concluída até que eu Ctrl - C (após o que leva um minuto ou mais para recuperar). Eu posso me comprometer com mensagens de confirmação inline ( git commit -m "I would rather type this in Vim" ) e posso iniciar o Vim / Vimdiff a partir do terminal com vim e vimdiff . Eu tenho meu editor definido para o Vim em vários lugares:

$ echo $EDITOR
vim
$ git config --get core.editor
vim

(Inicialmente, eu não tinha explicitamente configurado no Git, mas apenas na variável de ambiente, e ainda tinha o mesmo problema.)

Parece que estou executando o Windows Git no Cygwin. Sendo novo no Cygwin, eu não percebi isso quando fiz a pergunta pela primeira vez. Eu pude ver como isso pode causar problemas, mas depois de brincar eu ainda não consegui consertá-lo.

Alguém já viu esse problema antes? Alguma ideia de como consertar isso?

    
por Kazark 30.08.2013 / 19:09

1 resposta

9

Graças a @skarface, resolvi esse problema com relação ao comprometimento. Primeiro, como mencionei na edição da questão, descobri que não estava executando o Cygwin Git no Cygwin, mas o Windows Git real. Assim, a questão da integração faz sentido: não está encontrando vim ou vimdiff .

Eu tive que fazer:

git config --global core.editor C:/cygwin/bin/vim.exe

Não sei por que o acima funcionou, pois:

$ which vim
/usr/bin/vim

mas:

$ ls C:/cygwin/usr/bin
ls: cannot access C:/cygwin/usr/bin: No such file or directory

Não tenho certeza exatamente por que esse é o caminho que funcionou, mas aconteceu.

Eu já resolvi isso com relação ao diffing também. Eu tive que:

$ git config --global diff.tool vimdiff
$ git config --global difftool.vimdiff.cmd  'C:/cygwin/bin/vim.exe -d "$LOCAL" "$REMOTE"'

Isso me permitiu começar o Vimdiff com o Git, mas ainda havia alguns hickups. Eu pude ver os arquivos, mas a própria ferramenta não estava conseguindo diferenciar, dando esses erros:

Parece que o que estava acontecendo aqui é que o Git estava de alguma forma transando com a opção shell do Vim. No meu .vimrc , eu coloquei este comando:

set shell=bash

e agora tudo funciona bem.

    
por 30.08.2013 / 21:09