Aggiornamento settembre 2015 (6 anni dopo)
L' ultima versione di git-per-Windows (2.5.3) ora include:
Configurando git config core.editor notepad
, gli utenti possono ora utilizzare notepad.exe
come editor predefinito .
La configurazione git config format.commitMessageColumns 72
verrà prelevata dal wrapper del blocco note e termina il messaggio di commit dopo che l'utente lo ha modificato.
Vedi commit 69b301b di Johannes Schindelin ( dscho
) .
E Git 2.16 (Q1 2018) mostrerà un messaggio per dire all'utente che sta aspettando che l'utente finisca la modifica quando si genera un editor, nel caso in cui l'editor si apre a una finestra nascosta o in qualche luogo oscuro e l'utente si perde.
Vedi commit abfb04d (07 dic 2017) e commit a64f213 (29 nov 2017) di Lars Schneider ( larsxschneider
) .
Aiutato da: Junio C Hamano ( gitster
) .
(Unita da Junio C Hamano - gitster
- in commit 0c69a13 , 19 dic 2017)
launch_editor()
: indica che Git attende l'input dell'utente
Quando un elemento grafico GIT_EDITOR
viene generato da un comando Git che si apre e attende l'input dell'utente (ad esempio " git rebase -i
"), la finestra dell'editor potrebbe essere oscurata da altre finestre.
L'utente potrebbe rimanere a fissare la finestra del terminale Git originale senza nemmeno rendersi conto che deve interagire con un'altra finestra prima che Git possa procedere. A questo utente Git sembra sospeso.
Stampa un messaggio che Git è in attesa dell'input dell'editor nel terminale originale e liberalo quando l'editor ritorna, se il terminale supporta la cancellazione dell'ultima riga
Risposta originale
L'ho appena provato con la versione 1.6.2.msysgit.0.186.gf7512 di Git e Notepad ++ 5.3.1
Preferisco non dover impostare una variabile EDITOR, quindi ho provato:
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"
Questo dà sempre:
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" %*'.
Se definisco un npp.bat tra cui:
"c:\Program Files\Notepad++\notepad++.exe" %*
e scrivo:
C:\prog\git>git config --global core.editor C:\prog\git\npp.bat
Funziona solo dalla sessione DOS, ma non dalla shell git .
(non con il meccanismo di configurazione core.editor, uno script con " start /WAIT...
" non funzionerebbe, ma aprirà solo una nuova finestra DOS)
La risposta di Bennett menziona la possibilità di evitare l'aggiunta di uno script, ma di fare riferimento direttamente al programma stesso tra virgolette semplici . Nota la direzione delle barre! Utilizzare /
NOT \
per separare le cartelle nel nome del percorso!
git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
O se ti trovi in un sistema a 64 bit:
git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Ma preferisco usare uno script (vedi sotto): in questo modo posso giocare con percorsi diversi o opzioni diverse senza dover registrare di nuovo a git config
.
La vera soluzione (con uno script) era rendersi conto che:
ciò a cui si fa riferimento nel file di configurazione è in realtà uno /bin/sh
script shell ( ) , non uno script DOS.
Quindi ciò che funziona è:
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 questa impostazione, posso fare ' git config --global --edit
' da DOS o Git Shell, oppure posso fare ' git rebase -i ...
' da DOS o Git Shell.
I comandi bot attiveranno una nuova istanza di notepad ++ (da cui l' -multiInst
opzione '), e attenderanno la chiusura dell'istanza prima di continuare.
Nota che uso solo '/', non \
'. E ho installato msysgit usando l'opzione 2. (Aggiungi la git\bin
directory alla PATH
variabile d'ambiente, ma senza sovrascrivere alcuni strumenti di Windows integrati)
Il fatto che il wrapper notepad ++ sia chiamato .bat non è importante.
Sarebbe meglio chiamarlo "npp.sh" e inserirlo nella [git]\cmd
directory (o in qualsiasi directory a cui fa riferimento la variabile di ambiente PATH).
Guarda anche:
lightfire228 aggiunge nei commenti :
Per chiunque abbia un problema in cui N ++ apre solo un file vuoto e git non accetta il messaggio di commit, vedere " Interruzione del commit a causa di un messaggio vuoto ": cambia il tuo .bat
o il .sh
file per dire:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
Ciò dirà a notepad ++ di aprire il file temporaneo commit, anziché uno nuovo vuoto.