¿Cómo puedo configurar un editor para que funcione con Git en Windows?

561

Estoy probando Git en Windows . Llegué al punto de intentar "git commit" y recibí este error:

La terminal es tonta pero no se ha definido VISUAL ni EDITOR. Proporcione el mensaje utilizando la opción -m o -F.

Entonces descubrí que necesito tener una variable de entorno llamada EDITOR. No hay problema. Lo configuré para apuntar al Bloc de notas. Eso funcionó, casi. El mensaje de confirmación predeterminado se abre en el Bloc de notas. Pero el Bloc de notas no admite avances de línea desnuda. Salí y obtuve Notepad ++ , pero no puedo entender cómo configurar Notepad ++ como %EDITOR%tal de manera que funcione con Git como se esperaba.

No estoy casado con Notepad ++. En este punto no me importa qué editor uso. Solo quiero poder escribir mensajes de confirmación en un editor en lugar de la línea de comando (con -m).

Aquellos de ustedes que usan Git en Windows: ¿Qué herramienta usan para editar sus mensajes de confirmación y qué tuvieron que hacer para que funcione?

Patrick McElhaney
fuente
77
TLDR: ponga comillas simples alrededor de la ruta al ejecutable del editor
yoyo
Probablemente no sea útil, pero FWIW, solo uso el bloc de notas normal. No hice nada para que funcione. Simplemente salió de la caja por defecto ...
BrainSlugs83 05 de
11
Actualización de septiembre de 2015: un simple git config core.editor notepadahora es suficiente. Vea mi respuesta actualizada a continuación .
VonC
Solo una nota rápida de que JEdit no es un editor apropiado para git. JEdit solo abre una instancia incluso para múltiples archivos. Si ya estaba abierto, git hará que abra un nuevo archivo, pero luego deberá cerrar completamente JEdit antes de que git continúe. No hay una opción de línea de comando para hacer que JEdit abra una instancia separada para editar el mensaje de confirmación.
GrantRobertson
En caso de que a alguien le guste Sublime Text 3, aquí están mis instrucciones sobre cómo lo configuré para Windows ... y Linux también: la mejor configuración para Sublime Text 3 como su editor git (instrucciones de Windows y Linux) . @yoyo, TLDR para usar cualquier editor de texto: ponga comillas simples alrededor de la ruta al ejecutable del editor Y use barras diagonales (/) NO barras diagonales (\) en el nombre de la ruta al ejecutable de Windows.
Gabriel Staples

Respuestas:

562

Actualización de septiembre de 2015 (6 años después)

La última versión de git-for-Windows (2.5.3) ahora incluye:

Al configurar git config core.editor notepad, los usuarios ahora pueden usarlo notepad.execomo su editor predeterminado .
La configuración git config format.commitMessageColumns 72será recogida por el contenedor del bloc de notas y envolverá el mensaje de confirmación una vez que el usuario lo edite.

Ver commit 69b301b por Johannes Schindelin ( dscho) .

Y Git 2.16 (Q1 2018) mostrará un mensaje para decirle al usuario que está esperando que el usuario termine de editar al generar un editor, en caso de que el editor se abra en una ventana oculta o en algún lugar oscuro y el usuario se pierda.

Ver commit abfb04d (07 de diciembre de 2017) y commit a64f213 (29 de noviembre de 2017) por Lars Schneider ( larsxschneider) .
Ayudado por: Junio ​​C Hamano ( gitster) .
(Fusionada por Junio ​​C Hamano - gitster- en commit 0c69a13 , 19 dic 2017)

launch_editor(): indica que Git espera la entrada del usuario

Cuando GIT_EDITORse genera un gráfico mediante un comando Git que se abre y espera la entrada del usuario (por ejemplo, " git rebase -i"), la ventana del editor puede quedar oculta por otras ventanas.
Es posible que el usuario se quede mirando la ventana del terminal Git original sin siquiera darse cuenta de que necesita interactuar con otra ventana antes de que Git pueda continuar. Para este usuario, Git aparece colgado.

Imprima un mensaje de que Git está esperando la entrada del editor en el terminal original y deséchelo cuando regrese el editor, si el terminal admite borrar la última línea


Respuesta original

Lo acabo de probar con git versión 1.6.2.msysgit.0.186.gf7512 y Notepad ++ 5.3.1

Prefiero no tener que establecer una variable EDITOR, así que intenté:

git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"

Eso siempre da:

C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.

Si defino un npp.bat que incluye:

"c:\Program Files\Notepad++\notepad++.exe" %*

y escribo:

C:\prog\git>git config --global core.editor C:\prog\git\npp.bat

Simplemente funciona desde la sesión de DOS, pero no desde el shell git .
(no es que con el mecanismo de configuración core.editor, una secuencia de comandos con " start /WAIT..." no funcione, sino que solo abra una nueva ventana de DOS)


La respuesta de Bennett menciona la posibilidad de evitar agregar un script, pero hacer referencia directa al programa en sí entre comillas simples . Tenga en cuenta la dirección de las barras! ¡Use /NO \para separar carpetas en el nombre de la ruta!

git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

O si está en un sistema de 64 bits:

git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Pero prefiero usar un script (ver más abajo): de esa manera puedo jugar con diferentes rutas o diferentes opciones sin tener que registrarme nuevamente a git config.


La solución real (con un script) fue darse cuenta de que: a
lo que se refiere en el archivo de configuración es en realidad un /bin/shscript de shell ( ) , no un script de DOS.

Entonces, lo que funciona es:

C:\prog\git>git config --global core.editor C:/prog/git/npp.bat

con C:/prog/git/npp.bat:

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

o

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

Con esa configuración, puedo hacer ' git config --global --edit' desde DOS o Git Shell, o puedo hacer ' git rebase -i ...' desde DOS o Git Shell.
Los comandos de Bot activarán una nueva instancia de notepad ++ (de ahí el-multiInst opción ') y esperarán a que se cierre esa instancia antes de continuar.

Tenga en cuenta que solo uso '/', no \'. E instalé msysgit usando la opción 2. (Agregue el git\bindirectorio a la PATHvariable de entorno, pero sin anular algunas herramientas integradas de Windows)

El hecho de que el contenedor notepad ++ se llame .bat no es importante.
Sin embargo, sería mejor nombrarlo 'npp.sh' y ponerlo en el [git]\cmddirectorio (o en cualquier directorio al que haga referencia la variable de entorno PATH).


Ver también:


lightfire228 agrega en los comentarios :

Para cualquier persona que tenga un problema en el que N ++ simplemente abra un archivo en blanco y git no tome su mensaje de confirmación, consulte " Cancelación de la confirmación debido a un mensaje vacío ": cambie su archivo .bato .shpara decir:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

Eso le indicará a notepad ++ que abra el archivo de confirmación temporal, en lugar de uno nuevo en blanco.

VonC
fuente
En su script de shell, necesita comillas dobles alrededor de $ *, de lo contrario no funcionará correctamente para rutas con espacios en ellas. Gracias por la explicación detallada: estoy instalando git (y un montón de otras cosas) en Windows para programadores principiantes, y la línea de comandos es lo suficientemente difícil de asimilar sin hacer que aprendan los comandos vi.
Sarah Mei
Otro ejemplo concreto: stackoverflow.com/questions/1634161/…
VonC
1
Siguiendo la respuesta de Bennett, no necesita crear un guión, simplemente puede usar un apóstrofe 'dentro de las comillas ".
Tobias Kienzler
@Tobias: es cierto, he incluido su respuesta en la mía, así como la razón por la que todavía prefiero hacer referencia a un script en mi git configconfiguración.
VonC
66
@NateGlenn Use el dir /Xequivalente abreviado : " PROGRA~2" para " Program Files (x86)", que es un buen hábito para usar cuando se utilizan herramientas compatibles con plataformas cruzadas en Windows, que le permite aplastar el espacio en blanco.
JJ Zabkar
300

Basándose en la respuesta de Darren , para usar Notepad ++ simplemente puede hacer esto (todo en una línea):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Obviamente, la C:/Program Files/Notepad++/notepad++.exeparte debe ser la ruta al ejecutable Notepad ++ en su sistema. Por ejemplo, podría ser C:/Program Files (x86)/Notepad++/notepad++.exe.

Funciona como un encanto para mí.

Bennett McElwee
fuente
10
¡Yo también! Por cierto, esos cambios se explican en C: / Archivos de programa / Notepad ++ / user.manual / documentation / notepad-user-manual / command-line.html
Andrew Swan
23
Observe si Notepad ++ se encuentra en `C: \ Archivos de programa (x86)`
mindless.panda
8
Para x64 Windows, cambie a: git config --global core.editor "'C: / Archivos de programa (x86) / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"
Dariusz
44
Me doy cuenta de que llego tarde a esta fiesta, pero por curiosidad, ¿alguien sabe (o incluso recuerda, después de todos estos años) por qué uno especificaría "-notabbar"? Entiendo el razonamiento detrás de los otros parámetros (bueno, no estoy seguro de por qué "-noPlugin", en realidad), pero no este.
Wilson F
11
@WilsonF La razón es porque DEBE salir de notepad ++ para que git deje de esperar su entrada y continúe. ¡No desea abrir otras pestañas en esta instancia de Notepad ++ porque su sesión de git parecería estar congelada! Esas configuraciones hacen exactamente lo correcto: si ya tienes Notepad ++ abierto, obtienes una nueva instancia, que no te permite abrir otros archivos, y que debes cerrar cuando termines para que git sepa que has terminado de editar . Funciona igual para los mensajes de confirmación.
ErikE
50

De todos modos, acabo de jugar con esto y descubrí que lo siguiente funciona bien para mí:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

No creo que a CMD le gusten las comillas simples, por lo que debe usar comillas dobles "para especificar el argumento de cadena incrustado en el espacio".

Cygwin (que creo que es la plataforma subyacente para Git's Bash), por otro lado, le gustan ambos 'y "; puede especificar una ruta similar a CMD, utilizando en /lugar de \, siempre que se cite la cadena, es decir, en este caso, utilizando comillas simples.

La -manulación / indica el uso de múltiples editores y no hay necesidad de un %*agregado al final.

Darren Bishop
fuente
Gracias por la explicación de comillas simples / dobles, ¡tiene sentido ahora!
Patrick McDonald
3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"Funciona como un encanto para mí.
Vlad Holubiev
Usé `git config --global code.editor" 'C: \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "`, sin embargo, cuando ejecuto "git commit" se abre un editor de Bloc de notas. ¿Alguna idea de por qué este sería el caso? Gracias por adelantado.
Ryan Chase,
@RyanChase Eliminar la entrada de configuración local de ./git/config, por ejemploeditor = notepad
Ricky Boyce
1
Git Bash se ejecuta bajo MingW64, no Cygwin. Cygwin tiene su propio binario Git.
Hans Deragon
27

Editar: después de actualizar a Vim 7.3, he llegado a la conclusión de que la forma más limpia y fácil de hacer esto es:

  1. Agregue la carpeta principal de Vim a su ruta (haga clic con el botón derecho en Mi PCPropiedadesAvanzadoVariables de entorno )

  2. Ejecuta esto:

    git config --global core.editor "gvim --nofork '%*'"
    

Si lo hace de esta manera, estoy bastante seguro de que también funcionará con Cygwin.

Respuesta original:

Incluso con un par de respuestas relacionadas con Vim, estaba teniendo problemas para que esto funcione con gVim en Windows (mientras no usaba un archivo por lotes o% EDITOR% o Cygwin).

A lo que finalmente llegué es agradable y limpio, y se basa en algunas de las soluciones aquí:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Un problema que me llevó un tiempo es que estas no son las barras invertidas al estilo de Windows. Son cortes diagonales normales.

Nick Knowlson
fuente
1
Si vim está instalado Program Files(x86), entonces debe cambiar la ruta obviamente.
Swapnil
15

Notepad ++ funciona bien, aunque elijo seguir con Notepad, -m, o incluso a veces la "edición" incorporada.

El problema que encuentra al usar Notepad ++ está relacionado con cómo Git está iniciando el ejecutable del editor. Mi solución a esto es establecer la variable de entorno EDITORen un archivo por lotes, en lugar del ejecutable real del editor, que hace lo siguiente:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAITle dice a la sesión de línea de comando que se detenga hasta que la aplicación se cierre, por lo que podrá editar el contenido de su corazón mientras Git lo espera felizmente. % * pasa todos los argumentos al archivo por lotes a Notepad ++.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat
Patrick Johnmeyer
fuente
Tuve problemas para hacer que esto funcione bajo powershell. Sin embargo, este método ( stackoverflow.com/questions/10564/… ) funcionó bien.
Peter Stephens el
11

WordPad !

Estoy feliz de usar Vim, pero como estoy tratando de presentarle a Git a la compañía, quería algo que todos tuviéramos, y descubrí que WordPad parece funcionar bien (es decir, Git espera hasta que termine de editar y cerrar la ventana).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

Eso está usando Git Bash en msysgit; No lo he intentado desde el símbolo del sistema de Windows (si eso hace alguna diferencia).

Gavin
fuente
Me gustó la simplicidad de esto, pero no funcionó fuera de la caja. Esto es lo que probé. Recibo el siguiente mensaje de error: error: Hubo un problema con el editor 'C: \ Archivos de programa \ Windows NT \ Accesorios \ wordpad.exe'.
Shaun Luttin
3
Las citas son incorrectas. Debe poner las comillas dobles fuera de las comillas simples . Es decir, use "'C: \ Archivos de programa \ Windows NT \ Accesorios \ wordpad.exe'", y luego funcionará.
Shaun Luttin
También puede beneficiarse de las barras diagonales (/) en lugar de las barras diagonales inversas (\).
Chris Jones
1
Además, probablemente sea mejor usar "git config --global" en lugar de solo "git config" para esto. Lo más probable es que desee que la configuración se aplique a todos los repositorios de git en su estación de trabajo, no solo en el que está ahora.
Chris Jones
@ChrisJones, no tiene sentido en este caso porque los "archivos de programa" tienen un espacio entre ellos.
Pacerier
9

También uso Cygwin en Windows, pero con gVim (a diferencia del terminal basado en Vim ).

Para que esto funcione, he hecho lo siguiente:

  1. Creó un archivo por lotes de una línea (denominado git_editor.bat) que contiene lo siguiente: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Colocado git_editor.baten mi PATH.
  3. Conjunto GIT_EDITOR=git_editor.bat

Con esto hecho, git commitetc. invocará correctamente el ejecutable de gVim.

NOTA 1: La --noforkopción de gVim asegura que se bloquee hasta que se haya escrito el mensaje de confirmación.

NOTA 2: Las comillas alrededor de la ruta a gVim son necesarias si tiene espacios en la ruta.

NOTA 3: Las comillas alrededor de "% *" son necesarias en caso de que Git pase una ruta de archivo con espacios.

Tim Henigan
fuente
Para las personas que usan msysgit (no el git de cygwin) pude simplificar esto un poco. stackoverflow.com/questions/10564/…
Nick Knowlson
Pensándolo bien, podría funcionar también con Cygwin, no estoy totalmente seguro
Nick Knowlson
8

Gracias a la comunidad de Stack Overflow ... y un poco de investigación pude obtener mi editor favorito, EditPad Pro , funcionara como editor principal con msysgit 1.7.5.GIT y TortoiseGit v1.7.3.0 sobre Windows XP SP3. ..

Siguiendo el consejo anterior, agregué la ruta a un script Bash para el editor de código ...

git config --global core.editor c:/msysgit/cmd/epp.sh

Sin embargo, después de varios intentos fallidos en las soluciones mencionadas anteriormente ... finalmente pude hacer que esto funcionara. Según la documentación de EditPad Pro, agregar el indicador '/ newinstance' permitiría que el shell esperara la entrada del editor ...

El indicador ' / newinstance ' fue la clave en mi caso ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"
Eddie B
fuente
Sí, esa doble barra para el parámetro newinstance debería estar en los documentos de Editpad. ¡Gracias por señalarlo aquí!
gwideman
EditPad Pro requiere interruptores de línea de comandos /newinstancepara tener exactamente una barra diagonal. Esto es bastante normal para las aplicaciones de Windows. Si está invocando EditPad desde un shell de UNIX, necesitará usar cualquier mecanismo que ofrezca su shell para escapar de la barra diagonal, de modo que no vea el interruptor como una ruta absoluta y pase una barra diagonal literal a la línea de comando de EditPad.
Jan Goyvaerts
2
Si tiene EditPad Pro 7 y desea invocar EditPad Pro desde un proceso que quiere esperar el proceso de EditPad, entonces debe pasar el /waitinterruptor en la línea de comando de EditPad. Puede usar /waitcon o sin /newinstancecontrolar si se debe abrir una nueva ventana EditPad o si se debe reutilizar una ventana existente. El proceso iniciado por su script esperará a que se cierre el archivo independientemente de si se creó o reutilizó una ventana. EditPad Pro 6 y anteriores no son compatibles /wait.
Jan Goyvaerts
@ JanGoyvaerts ~ Gracias por la /waitpunta de la bandera, señor ... :)
Eddie B
No pude hacer que EditPad Lite funcionara para mí usando las instrucciones anteriores. Quizás fue porque estaba tratando de invocar EditPad (a través de Git) utilizando el terminal de Windows en lugar de Git Bash o algún otro shell de UNIX. Lo que funcionó para mí fue editar directamente la [core]sección de .gitconfig para incluir la línea editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473
8

Para Atom puedes hacer

git config --global core.editor "atom --wait"

y similares para Visual Studio Code

git config --global core.editor "code --wait"

que abrirá una ventana de Atom o Visual Studio Code para que pueda confirmar,

o para texto sublime :

git config --global core.editor "subl -n -w"
OmgKemuel
fuente
Mucho más simple y efectivo. Gracias.
rom5jp
6

Edite el archivo .gitconfig en la carpeta c: \ Users \ YourUser y agregue:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'
culpable
fuente
6

Este es el síntoma de problemas mayores. Cabe destacar que tienes algo ambientado TERM=dumb. Otras cosas que no funcionan correctamente son el lesscomando que dice que no tiene una terminal completamente funcional.

Parece que esto es más comúnmente causado por tener TERM configurado en algo en las variables de entorno globales de Windows. Para mí, el problema surgió cuando instalé Strawberry Perl, algo de información sobre esto está en el error de msysgit para este problema , así como varias soluciones.

La primera solución es arreglarlo en su ~ / .bashrc agregando:

export TERM=msys

Puede hacer esto desde el indicador de Git Bash de la siguiente manera:

echo "export TERM=msys" >> ~/.bashrc

La otra solución, que en definitiva es lo que hice porque no me importa acerca de las razones de fresa Perl para añadir TERM=dumba mis valores de entorno, es ir y retirar la TERM=dumbtan indica en este comentario en el informe de error de msysgit .

Panel de control / Sistema / Avanzado / Variables de entorno ... (o similar, dependiendo de su versión de Windows) es donde las variables de entorno fijas se configuran en Windows. Por defecto, TERM no está configurado. Si TERM está configurado allí, entonces usted (o uno de los programas que ha instalado, por ejemplo, Strawberry Perl) lo ha configurado. Elimine esa configuración, y debería estar bien.

Del mismo modo, si usa Strawberry Perl y se preocupa por el cliente CPAN o algo así, puede dejarlo TERM=dumbsolo y usarunset TERM en su archivo ~ / .bashrc, lo que tendrá un efecto similar al establecer un término explícito como el anterior.

Por supuesto, todas las otras soluciones son correctas, ya que puede usarlas git config --global core.editor $MYFAVORITEEDITORpara asegurarse de que Git use su editor favorito cuando necesite lanzar uno para usted.

lambacck
fuente
¡Muchas gracias! ¡He tenido este problema debido a Strawberry perl y me estaba volviendo loco! gracias por señalar esto
Dmitry Avtonomov
5

Vim / gVim funciona bien para mí.

>echo %EDITOR%

c:\Vim\Vim71\vim.exe
Matt McMinn
fuente
4

Tenía PortableGit 1.6 funcionando bien, pero después de actualizar a la versión PortableGit 1.7 de Windows, tuve problemas. Algunos de los comandos de Git abren el Notepad ++. Exe bien, pero otros no, especialmente Git rebase se comporta de manera diferente.

El problema es que algunos comandos ejecutan el proceso cmd de Windows y algunos usan el proceso cmd de Unix. Quiero dar atributos de inicio al editor Notepad ++, por lo que necesito tener un script personalizado. Mi solución es esta.

  1. Cree un script para ejecutar un editor de texto apropiado. El script se ve raro, pero maneja tanto la variación de Windows como la de Unix.

    c: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. Establecer la variable global core.editor

    El script se guardó en la carpeta git / cmd, por lo que ya está en una ruta gitconsole. Esto es obligatorio ya que una ruta completa puede no funcionar correctamente.

    git config --global core.editor "git-editor.bat"
    

Ahora puedo ejecutar los comandos maestros git commit -a y git rebase -i master . Pruébelo si tiene problemas con la herramienta Git Windows.

Quien
fuente
4

Uso Git en múltiples plataformas, y me gusta usar la misma configuración de Git en todas ellas. (De hecho, tengo todos mis archivos de configuración bajo control de lanzamiento con Git, y puse un clon de repositorio de Git en cada máquina). La solución que se me ocurrió es esta:

Puse mi editor en giteditor

git config --global core.editor giteditor

Luego creo un enlace simbólico llamado giteditor que está en mi RUTA . (Tengo un directorio bin personal , pero funciona en cualquier parte de la RUTA ). Ese enlace apunta a mi editor actual de elección. En diferentes máquinas y diferentes plataformas, uso diferentes editores, por lo que esto significa que no tengo que cambiar mi configuración universal de Git ( .gitconfig ), solo el enlace que giteditor apunta .

Los enlaces simbólicos son manejados por todos los sistemas operativos que conozco, aunque pueden usar diferentes comandos. Para Linux, usa ln -s . Para Windows, se utiliza el cmd incorporada MKLINK . Tienen diferentes sintaxis (que debe buscar), pero todo funciona de la misma manera, realmente.

Cuenta
fuente
En realidad, probé esto en Windows 7 y no funciona desde msys git. Diceerror: cannot spawn giteditor: No such file or directory
DanielSank
4

Según la sugerencia de VonC , esto funcionó para mí (me estaba volviendo loco):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

Omitir -waitpuede causar problemas, especialmente si está trabajando con Gerrit y cambia los identificadores que deben copiarse manualmente en la parte inferior de su mensaje de confirmación.

Daniel
fuente
4

Que tenía que hacer tanto de lo siguiente para obtener Git para lanzar Notepad ++ en Windows:

  • Agregue lo siguiente a .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Modifique el acceso directo para iniciar el shell Git Bash para que se ejecute como administrador, y luego use eso para iniciar el shell Git Bash. Supuse que la entrada del menú contextual "Git Bash here" no estaba iniciando Notepad ++ con los permisos requeridos.

Después de hacer las dos cosas anteriores, funcionó.

JL_SO
fuente
3

Yo uso Cygwin en Windows, así que uso:

export EDITOR="emacs -nw"

El -nwes para no-windows, es decir, decirle a Emacs que no intente usar X Window .

Las combinaciones de teclas de Emacs no funcionan para mí desde un shell de Windows, por lo que solo usaría esto desde un shell de Cygwin ... ( se recomienda rxvt ).

bjnortier
fuente
3

Esta es mi configuración para usar Geany como editor de Git:

git config --global core.editor C:/path/to/geany.bat

con el siguiente contenido en geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

Funciona tanto en una consola de DOS como en msysgit.

CharlesB
fuente
2
VonC respondió sobre notepad ++, mi respuesta es para Geany?
CharlesB
2

Parece que Git no encontrará el editor si hay espacios en la ruta. Por lo tanto, deberá colocar el archivo por lotes mencionado en la respuesta de Patrick en una ruta que no sea un espacio en blanco.

Comunidad
fuente
3
Este formato funciona bien para rutas con espacios: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "", por lo que puede ser práctico para evitar crear un archivo por lotes
Carl
2

He tenido dificultades para que Git coopere con WordPad , Komodo Edit y casi todos los demás editores que le doy. La mayoría está abierta para edición, pero Git claramente no espera a que suceda guardar / cerrar.

Como muleta, solo he estado haciendo ie

git commit -m "Fixed the LoadAll method"

para mantener las cosas en movimiento. Tiende a mantener mis mensajes de confirmación un poco más cortos de lo que probablemente deberían ser, pero claramente hay algo de trabajo por hacer en la versión de Windows de Git.

El GitGUI tampoco es tan malo. Se necesita un poco de orientación, pero después de eso, funciona bastante bien.

J Wynia
fuente
2

Prefiero usar Emacs. Configurarlo puede ser un poco complicado.

  1. Descarga Emacs y descomprímelo en algún lugar como c:\emacs.
  2. Ejecutar c:\emacs\bin\addpm.exe. Debe hacer clic con el botón derecho y "Ejecutar como administrador" si está utilizando Windows Vista o superior. Esto pondrá los ejecutables en tu camino.
  3. Agrega (server-start)en algún lugar de tu .emacsarchivo. Consulte las preguntas frecuentes de Emacs Windows para obtener consejos sobre dónde colocar su .emacsarchivo.
  4. git config --global core.editor emacsclientw

Git ahora abrirá archivos dentro de un proceso Emacs existente. Deberá ejecutar ese proceso existente manualmente c:\emacs\bin\runemacs.exe.

Michael Steele
fuente
1

Logré que la versión del entorno funcionara configurando la variable EDITOR usando comillas y /:

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"
Miguel
fuente
1

Acabo de tener el mismo problema y encontré una solución diferente. Yo estaba consiguiendo

error: There was a problem with the editor 'ec'

Tengo VISUAL=ec, y un archivo por lotes llamado ec.baten mi ruta que contiene una línea:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

Esto me permite editar archivos desde la línea de comandos con ec <filename>, y tenerlo VISUALconfigurado significa que la mayoría de los programas de Unixy también lo recogen. Sin embargo, Git parece buscar la ruta de manera diferente a mis otros comandos: cuando miré git commiten Process Monitor , vi que buscaba en cada carpeta de la ruta por ecy para ec.exe, pero no para ec.bat. Agregué otra variable de entorno ( GIT_EDITOR=ec.bat) y todo estuvo bien.

Tom Dunham
fuente
1

Estoy usando GitHub para Windows, que es una buena opción visual. Pero también prefiero la línea de comandos, por lo que para que funcione cuando abro un repositorio en un shell Git, simplemente configuro lo siguiente:

git config --global core.editor vim

que funciona muy bien

JaKXz
fuente
1

Encontré una solución hermosamente simple publicada aquí , aunque puede haber un error en la ruta en la que tiene que copiar el archivo "subl" proporcionado por el autor.

Estoy ejecutando Windows 7 x64, y tuve que poner el archivo "subl" en mi /Git/cmd/carpeta para que funcione.

Sin embargo, funciona de maravilla.

promedio
fuente
1

Atom y Windows 10

  1. Hice clic derecho en el icono de Atom en el escritorio e hice clic en propiedades.
  2. Copié la ruta de ubicación "Iniciar en"
  3. Miré por allí con el Explorador de Windows y encontré "atom.exe".
  4. Escribí esto en Git Bash:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

Nota: cambié todo \por /. Creé un .bashrc en mi directorio de inicio y solía /configurar mi directorio de inicio y funcionó, así que supuse /que sería el camino a seguir.

Jonathan Ramos
fuente
compruebe esta URL , será útil aumentar la calidad de su contenido
Willie Cheng
@willie Gracias, formateé el texto y agregué algunas etiquetas. Espero que lo mejore un poco.
Jonathan Ramos
0

Aquí hay una solución con Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Si no hay ruta, no pase ninguna ruta

  2. Si la ruta está vacía, pase la ruta vacía

  3. Si la ruta no está vacía, conviértala al formato de Windows.

Luego establezco estas variables:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR permite que el script funcione con Git

  2. GIT_EDITOR permite que el script funcione con comandos de Hub

Fuente

Steven Penny
fuente
0

Esto está funcionando para mí usando Cygwin y TextPad 6 (EDITAR: también está trabajando con TextPad 5 siempre que realice el cambio obvio en el script), y presumiblemente el modelo podría usarse también para otros editores:

Archivo ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

Archivo ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

Este one-liner también funciona:

Archivo ~/script/textpad.sh(opción 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"
kghastie
fuente
0

Esto funcionó para mí:

  1. Agregue el directorio que contiene el ejecutable del editor a su variable PATH . (Por ejemplo, "C: \ Archivos de programa \ Sublime Text 3 \" )
  2. Reinicie su computadora.
  3. Cambie la variable global Git core.editor al nombre del editor ejecutable sin la extensión '.exe' (por ejemplo, git config --global core.editor sublime_text)

¡Eso es!

NOTA: Sublime Text 3 es el editor que utilicé para este ejemplo.

javimsevilla
fuente
Cuando se configura de esta manera, ¿Sublime Text 3 abre varias instancias o maneja el hecho de que git necesita que se cierre para indicar el final de la edición?
James World
1
Creo que se abrirá una nueva ventana. Puede agregar el modificador --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip