¿Cómo uso Notepad ++ (u otro) con msysgit?

210

¿Cómo uso Notepad ++ (o cualquier otro editor además de vim) con msysgit?

Intenté todo lo siguiente en vano:

git config --global core.editor C:\Program Files\Notepad++\notepad++.exe

git config --global core.editor "C:\Program Files\Notepad++\notepad++.exe"

git config --global core.editor C:/Program Files/Notepad++/notepad++.exe

git config --global core.editor C:\\Program Files\\Notepad++\\notepad++.exe
PHLAK
fuente
1
¿Algún mensaje de error? ¿Has intentado configurar la variable de entorno EDITOR?
csl
44
Intente buscar aquí: stackoverflow.com/questions/10564/…
JasonTrue
Acabo de agregar algunas informaciones sobre la ruta del script, incluidos los espacios, según lo solicitado.
VonC el

Respuestas:

76

Actualización 2010-2011:

zumalifeguard 's solución (upvoted) es más simple que el original, ya que no necesita más una concha derivador de scripts.

Como explico en " ¿Cómo puedo configurar un editor para que funcione con Git en Windows? ", Prefiero un contenedor, ya que es más fácil intentar cambiar de editor, o cambiar la ruta de un editor, sin tener que registrar dicho cambio Con un git confignuevo .
Pero ese soy solo yo.


Información adicional : la siguiente solución funciona con Cygwin , mientras que la solución de zuamlifeguard no.


Respuesta original

El seguimiento:

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

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

funciona. Esos comandos se interpretan como script de shell, de ahí la idea de envolver cualquier conjunto de comandos de Windows en un shscript.
(Como comenta Franky : "¡Recuerde guardar su archivo con finales de línea de estilo Unix o recibir misteriosos mensajes de error!").sh

Más detalles sobre la pregunta SO ¿ Cómo puedo configurar un editor para que funcione con Git en Windows?

Tenga en cuenta la -multiInstopción ' ', para garantizar una nueva instancia de notepad ++ para cada llamada desde Git.

Tenga en cuenta también que, si está usando Git en Cygwin (y quiere usar Notepad ++ de Cygwin ), scphantm explica en " usar Notepad ++ para Git dentro de Cygwin " que debe tener en cuenta que:

gitestá pasando un cygwincamino y nppno sabe qué hacer con él

Entonces el guión en ese caso sería:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$(cygpath -w "$*")"

Múltiples líneas para facilitar la lectura:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
  -nosession -noPlugin "$(cygpath -w "$*")"

Con "$(cygpath -w "$*")"ser la parte importante aquí.

Val comentó (y luego eliminó) que no debe usar la -notabbaropción:

No sirve de nada deshabilitar la pestaña durante el rebase, pero hace mucho daño a la usabilidad general del Bloc de notas ya que se -notabconvierte en la configuración predeterminada y debe hacerlo Settings>Preferences>General>TabBar> Hide>uncheckcada vez que inicie el bloc de notas después del rebase. Esto es el infierno. Me recomendó el infierno.

Entonces use más bien:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession -noPlugin "$(cygpath -w "$*")"

Es decir:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession \
  -noPlugin "$(cygpath -w "$*")"

Si desea colocar el script ' npp.sh' en una ruta con espacios (como en ' c:\program files\...',), tiene tres opciones:

  • Intente citar la ruta (comillas simples o dobles), como en:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • o pruebe la notación de nombre corto (no infalible ):

    git config --global core.editor C:/progra~1/git/npp.sh
  • o (mi favorito) lugar ' npp.sh' en una parte del directorio de su %PATH%variable de entorno. No tendría que especificar ninguna ruta para el script.

    git config --global core.editor npp.sh
  • Steiny informa en los comentarios que tienen que hacer:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'
VonC
fuente
Conseguí que esto funcionara colocando npp.sh en la raíz de mi unidad (es decir, C: /npp.sh). Cada vez que intento apuntar a una carpeta con espacios (es decir, D: / Archivos de programa (x86) /Git/npp.sh), falla, ¿cuál es la forma correcta de escapar espacios y / o hacer que esto funcione?
PHLAK el
poner comillas a su alrededor. ¿Ves cómo tiene citas sobre todo en su ejemplo?
Fred
2
La respuesta de zumalifeguard funcionó para mí. No requiere un contenedor de script de shell.
wbinford
1
@wbinford: He agregado un enlace a la respuesta de zumalifeguard (que voté positivamente), así como la razón por la que prefiero registrar un contenedor, en lugar del comando directo.
VonC
1
He intentado múltiples combinaciones de lo anterior y ninguna funciona con git. tengo mi script npp en mi camino y si desde mi consola cygwin escribo, "npp {file}" npp abre el archivo muy bien, pero cuando hago un "git rebase -i", npp se abre con un archivo en blanco en lugar de Fusionar archivo. alguna idea de por qué esto sucedería?
scphantm
433
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

O, para Windows de 64 bits y una instalación de Notepad ++ de 32 bits:

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

O bien, se puede emitir lo siguiente en la línea de comandos en Windows de 32 bits o de 64 bits. Extraerá la ubicación de notepad ++. Exe del registro y configurará git para usarlo automáticamente:

FOR /F "usebackq tokens=2*" %A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\notepad++.exe" /ve`) DO git config --global core.editor "'%B' -multiInst -notabbar -nosession -noPlugin"

Si desea colocar lo anterior desde un archivo .BAT o .CMD, debe reemplazar% A con %% A y% B con %% B

zumalifeguard
fuente
9
funciona en extensiones git también. tenga en cuenta que para ventanas de 64 bits la entrada es"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell
15
Lo tonto es que -notabbar deshabilitará la barra de pestañas de forma permanente, no solo para esa sesión. Cuando inicie normalmente Notepad ++, debe ir al cuadro de diálogo de configuración y habilitar nuevamente la barra de pestañas.
Oskar Berggren
44
Tuve que usar: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... no estoy seguro de por qué.
David Faivre
1
Tengo Windows 7 de 64 bits, msysgit v1.9.2 y Notepad ++ v6.6.9 y esto funcionó PERFECTAMENTE . Gracias.
Radu Murzea
2
@CoDEmanX Sin -multiInstesto probablemente solo indicará al Notepad ++ que ya se está ejecutando para abrir el archivo y luego salir inmediatamente. Esto puede ser un gran problema si cualquier llamada que haga el editor espera que regrese solo cuando termine de editar (es decir, una operación síncrona, como es el caso al llamar a vi). Pruebe un rebase interactivo ( git rebase -i), por ejemplo. Si esto todavía funciona como se esperaba, entonces estás bien.
blubberdiblub
7

Esto funciona para mi

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe
Tim Scott
fuente
hice lo mismo ... ¿ahora cómo abrir notepad ++ para confirmar con el mensaje? ¿Qué es el commad? por favor, ¿puedes dar un ejemplo
Shridutt Kothari
44
Agregar la -multiInstopción es crucial aquí, como en las otras respuestas.
blubberdiblub
1
Esto no es bueno por dos razones. Primero, si el volumen C: es NTFS con la opción de nombre de archivo 8.3 desactivada, no hay ninguna C:\Progra~1. En segundo lugar, puede haber varios C:\Progra*directorios, por lo que el ~1sufijo no es necesariamente el válido.
kkm
5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""
Jus
fuente
Eso hizo el truco para mí! Luego, el .gitconfig se ve así: [core] editor = \ "c: \\ Program Files (x86) \\ Notepad ++ \\ notepad ++. Exe \" -multiInst -nosession -noPlugin
AtliB
Vea la respuesta más votada, que incluye esto (no leí lo suficiente)
AtliB
3

Yo uso el enfoque con la variable PATH. La ruta al Notepad ++ se agrega a la variable PATH del sistema y luego core.editor se configura de la siguiente manera:

git config --global core.editor notepad++

Además, puede agregar algunos parámetros adicionales para Notepad ++:

git config --global core.editor "notepad++.exe -multiInst"

(como detallé en " Git core.editorpara Windows ")

Y aquí puede encontrar algunas opciones que puede usar al indicar las Opciones de línea de comandos de Notepad ++ .

starikovs
fuente
1

ACTUALIZACIÓN 2015

Si desempaqueta / instala Notepad ++ c:\utils\npp\y renombra Notepad ++ . Exe a npp.exe por simplicidad, entonces todo lo que tienes que hacer es

git config --global core.editor c:/utils/npp/npp.exe

Sin guiones de envoltura u otros trucos. No es necesario tener Notepad ++ en PATH.

Dan Dascalescu
fuente
Actualización 2020: parece que te has perdido las opciones para abrir una nueva instancia de bloc de notas. Lo he usado desde cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"y funciona desde ambos cmd terminalygit bash
oleksa
1

Estoy usando Windows 10 y notepad ++, y recibí este mensaje de error:

line 0: syntax error near unexpected token `(' git windows

Entonces hago la configuración de esta manera:

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

y funciona

Juan Luis Vivas Occhipinti
fuente
0

Siga estas instrucciones,

  1. Primero asegúrese de tener Notepad ++ instalado en su sistema y que es el programa predeterminado para abrir archivos .txt.

  2. Luego instale gitpad en su sistema. Tenga en cuenta que la última vez que verifiqué que el enlace de descarga estaba roto, descárguelo desde aquí como se explica .

Luego, mientras se compromete, debería ver aparecer su editor de texto favorito.

Aditya P
fuente
0

Usé la solución de starikovs. Comencé con una ventana bash y di los comandos

cd ~
touch .bashrc

Luego encontré el archivo .bashrc en Windows Explorer, lo abrí con Notepad ++ y agregué

PATH=$PATH:"C:\Program Files (x86)\Notepad++"

para que bash sepa dónde encontrar Notepad ++. (¡Tener Notepad ++ en bash PATH es algo útil por sí solo!) Luego pegué su línea

git config --global core.editor "notepad++.exe -multiInst"

en una ventana de bash. Comencé una nueva ventana bash para un repositorio git para probar cosas con el comando

git rebase -i HEAD~10

y el archivo abierto en Notepad ++ como se esperaba.

Ivan
fuente
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