Não foi possível executar o editor

153

Não tenho muitas vezes que modificar várias mensagens de confirmação, mas isso aconteceu uma ou duas vezes e nem me lembro de ter visto isso. Espero que alguém tenha. Quando eu git rebase -i HEAD~7, a lista esperada abre no vi exatamente como esperado. Eu mudo os pickvalores para editonde apropriado e então :wq.

Não foi possível executar o editor

A core.editorconfiguração no meu global .gitconfigé vi(eu também mudei para vimum movimento desesperadamente desesperado). Eu tentei usar mate, mas isso nem abriu a lista inicial corretamente, então eu a mudei de volta.

Estou usando a v1.7.3 e gostaria de receber sugestões.

Rob Wilkerson
fonte
1
A fonte inclui git_editor "$TODO" || die_abort "Could not execute editor". Como você diz que o editor realmente aparece, isso significa que ele está retornando um código de saída diferente de zero. Você pode replicar esse comportamento usando-o normalmente na linha de comando?
Cascabel
O que é estranho para mim é que o vi é iniciado para exibir a lista de confirmações, mas quando eu salvo e fecho tudo acaba. Veja minha resposta para a alteração que fiz para fazê-la começar a funcionar magicamente.
Rob Wilkerson
Qual sistema operacional você estava executando? Executando o OSX Lion, tive o mesmo problema e sua resposta o corrigiu. +1
Adam Lewis
@ AdamLewis - Não posso ter certeza agora, mas provavelmente 10.6 ou .7, dada a data. OSX, com certeza.
Rob Wilkerson
5
Acho que criei esse problema quando usei o homebrew para instalar um novo vim. A configuração git config --global core.editor "/usr/local/bin/vim"corrigiu para mim.
mmell

Respostas:

185

Ontem foi apenas um daqueles dias. Em uma cotovia, decidi definir o caminho completo para vi (por exemplo /usr/bin/vi) em vez de apenas para o executável. Agora tudo funciona. Eu tenho que admitir que eu não entendi, pois vié perfeitamente executável por conta própria (minha $EDITORvariável env também está definida como vi), mas está funcionando e meu carma técnico não tem sido tão bom ultimamente, então talvez eu não deva questionar as divindades vão ...

Rob Wilkerson
fonte
6
Onde você definiu o caminho completo para / usr / bin / vi?
Amala
131
Eu colocá-lo no meu arquivo de configuração global: git config --global core.editor "/usr/bin/vim".
precisa
Eu tive o mesmo problema. Por razões que não podem compreender, minha configuração core.editor foi definido para / user / bin / vim ao invés de / usr / bin / vim
jonnybot
Teve o mesmo problema, mas com Sublime Text - o caminho completo finalmente resolveu as coisas. O que foi estranho, porque tenho certeza de que tudo funcionou bem antes de qualquer maneira ...: - \
Hal
git config --global color.editor "/usr/local/bin/vim"que trabalhou para mim :), graças
przbadu
159

O seguinte comando

git config --global core.editor /usr/bin/vim

corrige isso.

[editar]

Agora vejo que alguém já postou nos comentários. Espero que ainda seja útil para algumas pessoas cegas como eu.

Langusten Gustel
fonte
6
Para o Windows, por exemplo (falta de aspas simples, era meu problema): git config --global core.editor "'C: \ Arquivos de Programas (x86) \ Vim \ vim74 \ vim.exe'"
chrjs
1
Sim, isso ^. Para esclarecer isso, use aspas duplas entre aspas simples ao redor do caminho para o executável.
Jacob
Funciona como um encanto!
R11G:
7

Ao contrário das outras respostas aqui até agora, para mim, usando o caminho absoluto para vi e definindo o git core.editor não foram suficientes para resolver o problema. (Esses já estavam no lugar.)

Na minha situação, o problema foi resolvido adicionando a -fflag ao comando vi:

git config --global core.editor '/usr/bin/vi -f'

Depois que essa -fopção estiver em vigor, eu posso usá-la git rebase -ie, quando eu salvar e sair da lista de confirmação, a rebase continuará como deveria, em vez de fornecer o erro "não foi possível executar o editor".

A página de manual do vim diz em relação à opção -f,

Para a versão da GUI, o Vim não bifurca e desconecta do shell em que foi iniciado. ... Esta opção deve ser usada quando o Vim for executado por um programa que aguardará a conclusão da sessão de edição (por exemplo, correio).

Bem, eu não estou usando uma versão GUI, que eu conheço. Estou executando gitna linha de comando bash em uma janela de terminal no masOS Sierra 10.12.6. Mas, como git rebase -iaguarda a conclusão da sessão de edição, acho que é por isso que a -fopção é necessária aqui. Talvez o vim (sem -f) tente se soltar do shell por algum motivo que não consegui descobrir.

LarsH
fonte
6

Eu tive esse problema e foi causado por alguma parte do plug-in vcscommand para vim. Iniciar o vim com qualquer um destes comandos resultou no código de saída 1 ("erro"):

  • vi
  • vim

Mas isso me deu o código de saída 0 ("sucesso"):

  • /usr/bin/vi
  • /usr/bin/vim
  • vi -u NONE
  • vim -u NONE

Consegui rastreá-lo de volta para o plug-in específico, desativando os ~/.vimrcarquivos ~/.vimrenomeando-os e executando-os vi -c q ; echo $?para executar rapidamente o vim e imprimir o código de saída.

Annika Backstrom
fonte
1
Eu tive o mesmo problema e definir o caminho completo para vim trabalhou: git configuração --global core.editor / usr / bin / vim
James
Outra possível culpado parece ser o plugin patógeno no Mac OS X .
precisa saber é o seguinte
3

Para mim, foi um problema com o meu .vimrc. Renomear temporariamente esse arquivo o corrigiu. Seguido por depuração do meu .vimrc. Isso é muito semelhante à experiência de ignu.

Pontes de argila
fonte
Sim, eu tinha! Silencioso colorscheme macvim no meu .vimrc, para definir o esquema de cores como se existisse e para não me incomodar se não existisse (para que o vim da linha de comando funcionasse). Por outro lado, isso mudou o status de saída para 1 quando falhou, mesmo com o silencioso !.
Max
3

Se você quiser, por qualquer motivo, usar sublime, poderá fazer algo como o seguinte no seu arquivo de configuração global:

 git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl"
alphapilgrim
fonte
1

Levei um tempo para localizar meu problema em um dos meus plugins.

(especificamente, era https://github.com/ervandew/supertab )

Eu acho que essa é a desvantagem de atualizar automaticamente todos os meus plugins.

Portanto, o melhor conselho é desativar a metade do seu vimrc e plugins. Se isso não ajudar, o problema está na sua outra metade.

ignu
fonte
Eu tenho o mesmo problema com o supertab.
harithski
Como você o localizou na supertab? Seria uma informação realmente útil.
Justin Force
1

Outra opção é usar o nanoeditor.

$ whereis nano
$ git config --global core.editor path/to/nano

Corrige isso.

techkuz
fonte
1

Eu estava tentando esmagar confirmações, como mostrado aqui https://www.youtube.com/watch?v=V5KrD7CmO4o . Meu editor git (notepad ++) foi aberto na etapa de rebase. Mas, na etapa de alteração de mensagem de confirmação, vi o problema "Não foi possível executar o editor". Provavelmente aconteceu porque as configurações do editor git estavam erradas e também porque instalei o bloco de notas ++ em um local não padrão no meu sistema Windows. Ou seja, 'git config core.editor' me deu notepad++ -multilnst- nosession.

Para corrigir o problema, forneça o caminho completo como este:

git config --global core.editor "'C:\CustomFolder\NPP\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Consulte: https://www.youtube.com/watch?v=YLxdkcT6H4g

MasterJoe2
fonte
0

Você tem certeza de que / usr / bin / vim estava em 1.7.3? Eu tive o mesmo problema porque tinha o plug-in de backup instalado, que é suportado apenas na 1.7.3 e por alguma razão / usr / bin / vim foi subitamente rebaixado para 1.7.2, talvez por causa de uma grande atualização do XCode. ..

Flov
fonte
0

Eu também tive esse problema quando já tinha o vim aberto para uma nova recuperação em outro terminal. Eu havia iniciado o rebase, fui interrompido e, quando voltei, tentei novamente do zero no outro terminal, sem perceber que estava no meio do mesmo rebase em outro lugar. Terminar a sessão de rebase do vim no outro terminal funcionou bem.

mmrobins
fonte
0

Curiosamente, apenas tentar novamente funcionou para mim.

Minhas variáveis ​​core.editor e $ EDITOR não estão definidas.

Eben Geer
fonte
0

Para mim, usando o Windows: feche o terminal atual e abra outro (win + R, digite 'cmd' e depois 'enter') e, de repente, ele funciona.

miao.wang
fonte
0

Solução VS Code:

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron"

Eugene Balashov
fonte