No se pudo ejecutar el editor

153

A menudo no tengo que modificar varios mensajes de confirmación, pero ha sucedido una o dos veces y nunca recuerdo haber visto esto. Espero que alguien más lo haya hecho. Cuando yo git rebase -i HEAD~7, la lista esperada se abre en vi exactamente como se esperaba. Cambio los pickvalores a editdonde sea apropiado y luego :wq.

No se pudo ejecutar el editor

La core.editorconfiguración en mi global .gitconfiges vi(también lo he cambiado a vimun movimiento desesperado). Intenté usarlo mate, pero eso ni siquiera abrió la lista inicial correctamente, así que lo cambié de nuevo.

Estoy usando v1.7.3 y agradecería cualquier sugerencia.

Rob Wilkerson
fuente
1
La fuente incluye git_editor "$TODO" || die_abort "Could not execute editor". Como usted dice que el editor realmente aparece, eso significa que está devolviendo un código de salida distinto de cero. ¿Puedes replicar ese comportamiento usándolo normalmente en la línea de comandos?
Cascabel el
Lo extraño para mí es que vi se inicia para mostrar la lista de confirmaciones, pero cuando guardo y cierro todo simplemente muere. Vea mi respuesta para el cambio que hice para que mágicamente comience a funcionar.
Rob Wilkerson el
¿Qué sistema operativo estabas ejecutando? Al ejecutar OSX Lion tuve el mismo problema y su respuesta lo solucionó. +1
Adam Lewis
@ AdamLewis - No puedo estar seguro ahora, pero probablemente 10.6 o .7 dada la fecha. OSX, seguro.
Rob Wilkerson
55
Creo que creé este problema cuando utilicé homebrew para instalar un nuevo vim. La configuración git config --global core.editor "/usr/local/bin/vim"me lo arregló.
mmell

Respuestas:

185

Ayer fue solo uno de esos días. En una alondra, decidí establecer la ruta completa a vi (por ejemplo /usr/bin/vi) en lugar de solo el ejecutable. Ahora todo funciona. Tengo que admitir que no lo entiendo, ya que vies perfectamente ejecutable por sí solo (mi $EDITORvariable env también está configurada en vi), pero funciona y mi karma técnico no ha sido tan bueno últimamente, así que tal vez no debería cuestionar las deidades ...

Rob Wilkerson
fuente
66
¿Dónde configuró la ruta completa a / usr / bin / vi?
Amala
131
Lo puse en mi archivo de configuración global: git config --global core.editor "/usr/bin/vim".
Rob Wilkerson el
Tuve el mismo problema. Por razones que no puedo entender, mi configuración core.editor se estableció en / user / bin / vim en lugar de / usr / bin / vim
jonnybot
Tuve el mismo problema pero con Sublime Text: la ruta completa finalmente resolvió las cosas. Lo cual fue extraño porque estoy seguro de que todo funcionó bien antes de todos modos ...: - \
Hal
git config --global color.editor "/usr/local/bin/vim"funcionó para mí :), gracias
przbadu
159

El siguiente comando

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

lo arregla

[editar]

Ahora veo que alguien ya lo publicó en los comentarios. Espero que siga siendo útil para algunas personas ciegas como yo.

Langusten Gustel
fuente
66
Para Windows, por ejemplo (faltan comillas simples, fue mi problema): git config --global core.editor "'C: \ Program Files (x86) \ Vim \ vim74 \ vim.exe'"
chrjs
1
Sí, esto ^. Para aclarar esto, use comillas dobles alrededor de comillas simples alrededor de la ruta al ejecutable.
Jacob
¡Funciona de maravilla!
R11G
7

A diferencia de las otras respuestas aquí hasta ahora, para mí el uso de la ruta absoluta a vi y la configuración de git core.editorno fueron suficientes para resolver el problema. (Esos ya estaban en su lugar).

En mi situación, el problema se resolvió agregando la -fbandera al comando vi:

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

Una vez que esta -fopción está en su lugar, puedo usar git rebase -i, y cuando guardo y salgo de la lista de confirmación, la nueva versión continúa como debería en lugar de dar el error "no se pudo ejecutar el editor".

La página de manual de vim dice con respecto a la opción -f,

Para la versión GUI, Vim no se bifurcará y se separará del shell en el que se inició. ... Esta opción debe usarse cuando Vim es ejecutado por un programa que esperará a que termine la sesión de edición (por ejemplo, correo).

Bueno, no estoy usando una versión GUI, que yo sepa. Estoy corriendo giten la línea de comando bash en una ventana de terminal en masOS Sierra 10.12.6. Pero como git rebase -iespera a que termine la sesión de edición, supongo que es por eso que la -fopción es necesaria aquí. Tal vez vim (sin -f) intenta bifurcarse / separarse del shell por alguna razón que no he podido entender.

LarsH
fuente
6

Tuve este problema y fue causado por alguna parte del complemento vcscommand para vim. El inicio de vim con cualquiera de estos comandos dio como resultado el código de salida 1 ("error"):

  • vi
  • vim

Pero estos me dieron el código de salida 0 ("éxito"):

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

Pude rastrearlo hasta el complemento específico al deshabilitar ~/.vimrcy a los archivos ~/.vimrenombrándolos y ejecutándolos vi -c q ; echo $?para ejecutar rápidamente vim e imprimir el código de salida.

Annika Backstrom
fuente
1
Tuve el mismo problema y la configuración de la ruta completa a vim funcionó: git config --global core.editor / usr / bin / vim
James
Otro posible culpable parece ser el complemento de patógenos en Mac OS X .
sschuberth
3

Para mí, fue un problema con mi .vimrc. Cambiar el nombre de ese archivo temporalmente lo arregló. Seguido por la depuración de mi .vimrc. Esto es muy similar a la experiencia de ignu.

Puentes de arcilla
fuente
Sí, tenía! Silencioso colorscheme macvim en mi .vimrc, para establecer el esquema de colores a ese si existía, y no molestarme si no existía (por lo que la línea de comando vim funcionaría). Por otro lado, eso cambió el estado de salida a 1 cuando falló, incluso con silencio.
Max
3

Si, por alguna razón, quisiera usar sublime, podría hacer algo como lo siguiente en su archivo de configuración global:

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

Solo me tomó un tiempo localizar mi problema en uno de mis complementos.

(específicamente, era https://github.com/ervandew/supertab )

Supongo que esa es la desventaja de actualizar automáticamente todos mis complementos.

Así que el mejor consejo, deshabilita la mitad de tu vimrc y complementos. Si eso no ayuda, el problema está en tu otra mitad.

ignu
fuente
Tengo el mismo problema con supertab.
harithski
¿Cómo lo rastreaste para superar? Esa sería una información realmente útil.
Justin Force
1

Otra opción es usar el nanoeditor.

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

Lo arregla

techkuz
fuente
1

Intenté aplastar las confirmaciones como se muestra aquí https://www.youtube.com/watch?v=V5KrD7CmO4o . Mi editor git (notepad ++) se abrió en el paso de rebase. Pero, en el paso de mensaje de confirmación de modificación, vi el problema "No se pudo ejecutar el editor". Probablemente sucedió porque la configuración del editor git era incorrecta y también porque instalé notepad ++ en una ubicación no estándar en mi sistema de Windows. Es decir, 'git config core.editor' me dio notepad++ -multilnst- nosession.

Para solucionar el problema, proporcione una ruta completa como esta:

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

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

MasterJoe2
fuente
0

¿Estás seguro de que / usr / bin / vim estaba en 1.7.3? Tuve el mismo problema porque tenía instalado el complemento de copia de seguridad, que solo es compatible con 1.7.3 y, por alguna razón, / usr / bin / vim se redujo repentinamente a 1.7.2, tal vez debido a una actualización importante de XCode. ..

Flov
fuente
0

También tuve este problema cuando ya tenía vim abierto para un rebase en otra terminal. Había comenzado el rebase, me interrumpieron, y cuando regresé lo intenté nuevamente desde cero en la otra terminal, sin darme cuenta de que estaba en el medio del mismo rebase en otro lugar. Simplemente terminar la sesión de vim rebase en la otra terminal funcionó bien.

mmrobins
fuente
0

Por extraño que parezca, intentarlo de nuevo funcionó para mí.

Mis variables core.editor y $ EDITOR no están configuradas.

Eben Geer
fuente
0

Para mí, usando Windows: cierre el terminal actual y abra otro (win + R, escriba 'cmd', luego 'enter'), y de repente funciona.

miao.wang
fuente
0

Solución VS Code:

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

Eugene Balashov
fuente