Come posso usare Notepad ++ (o altro) con msysgit?


210

Come posso usare Notepad ++ (o qualsiasi altro editor oltre a vim) con msysgit?

Ho provato tutto quanto segue senza alcun risultato:

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

1
Qualche messaggio di errore? Hai provato a impostare la variabile d'ambiente EDITOR?
CSL,


Ho appena aggiunto alcune informazioni sul percorso dello script, inclusi gli spazi, come richiesto.
VonC,

Risposte:


76

Aggiornamento 2010-2011:

zumalifeguard s' soluzione (upvoted) è più semplice di quella originale, in quanto non ha più bisogno di una shell wrapper script.

Come spiego in " Come posso impostare un editor per lavorare con Git su Windows? ", Preferisco un wrapper, in quanto è più facile provare a cambiare editor o cambiare il percorso di un editor, senza dover registrare detto cambiamento con un git confignuovo .
Ma sono solo io.


Ulteriori informazioni : la seguente soluzione funziona con Cygwin , mentre la soluzione di zuamlifeguard no.


Risposta originale.

Il seguente:

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 "$*"

funziona. Tali comandi sono interpretati come script di shell, quindi l'idea di avvolgere qualsiasi set di comandi di Windows in uno shscript.
(Come Franky commenta : "Ricorda di salvare il tuo .shfile con terminazioni di linea in stile Unix o ricevere misteriosi messaggi di errore!")

Maggiori dettagli sulla domanda SO Come posso impostare un editor per lavorare con Git su Windows?

Nota l' -multiInstopzione ' ', per garantire una nuova istanza di notepad ++ per ogni chiamata da Git.

Nota anche che, se stai usando Git su Cygwin (e vuoi usare Notepad ++ da Cygwin ), allora scphantm spiega in " usando Notepad ++ per Git all'interno di Cygwin " che devi essere consapevole che:

gitsta passando un cygwinpercorso e nppnon sa cosa farne

Quindi la sceneggiatura in quel caso sarebbe:

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

Linee multiple per leggibilità:

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

Con l' "$(cygpath -w "$*")"essere la parte importante qui.

Val ha commentato (e quindi eliminato) che non dovresti usare l' -notabbaropzione:

Non serve a nulla disabilitare la scheda durante rebase, ma fa molto male all'usabilità del Blocco note generale poiché -notabdiventa l'impostazione predefinita e devi Settings>Preferences>General>TabBar> Hide>uncheckogni volta che avvii il Blocco note dopo rebase. Questo è l'inferno. Mi hai raccomandato l'inferno.

Quindi usa piuttosto:

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

Questo è:

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

Se vuoi posizionare lo script ' npp.sh' in un percorso con spazi (come in ' c:\program files\...',), hai tre opzioni:

  • Prova a citare il percorso (virgolette singole o doppie), come in:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • oppure prova la notazione con il nome breve (non infallibile):

    git config --global core.editor C:/progra~1/git/npp.sh
  • o (il mio preferito) posizionare ' npp.sh' in una parte della directory della %PATH%variabile di ambiente. Non dovresti quindi specificare alcun percorso per lo script.

    git config --global core.editor npp.sh
  • Steiny riporta nei commenti che devono fare:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'

Ho ottenuto che funzioni inserendo npp.sh nella radice del mio disco (es. - C: /npp.sh). Ogni volta che provo a scegliere come target una cartella con spazi (es. - D: / Programmi (x86) /Git/npp.sh) non riesce, qual è il modo corretto di sfuggire agli spazi e / o farlo funzionare?
PHLAK,

metti delle virgolette attorno. Vedi come ha citazioni sull'intera cosa nel suo esempio?
Fred,

2
La risposta di zumalifeguard ha funzionato per me. Non richiede un wrapper di script di shell.
Wbinford,

1
@wbinford: ho aggiunto un link alla risposta di zumalifeguard (che ho votato), così come il motivo per cui preferisco registrare un wrapper, piuttosto che il comando diretto.
VonC,

1
Ho provato più combinazioni di quanto sopra e nessuna funziona con git. ho il mio script npp nel mio percorso e se dalla mia console cygwin digito, "npp {file}" npp apre il file bene, ma quando faccio un "git rebase -i" npp si apre con un file vuoto invece del unisci file. qualche idea sul perché questo accada?
scphantm,

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

Oppure, per Windows a 64 bit e un'installazione a 32 bit di Notepad ++:

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

In alternativa, è possibile eseguire quanto segue sulla riga di comando su Windows a 32 o 64 bit. Tirerà la posizione di notepad ++. Exe dal registro e configurerà git per usarlo automaticamente:

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"

Se si desidera inserire quanto sopra da un file .BAT o .CMD, è necessario sostituire% A con %% A e% B con %% B


9
funziona anche con le estensioni git. si noti che per Windows a 64 bit la voce è"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell,

15
La cosa sciocca è che -notabbar disabiliterà permanentemente la barra delle schede, non solo per quella sessione. Quando si avvia normalmente Notepad ++, è necessario accedere alla finestra di dialogo delle impostazioni e abilitare nuovamente la barra delle schede.
Oskar Berggren,

4
Ho dovuto usare: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... non so perché.
David Faivre,

1
Ho Windows 7 a 64 bit, msysgit v1.9.2 e Notepad ++ v6.6.9 e questo ha funzionato PERFETTAMENTE . Grazie.
Radu Murzea,

2
@CoDEmanX Senza di -multiInstesso probabilmente segnalerà il Notepad ++ già in esecuzione per aprire il file e quindi uscire immediatamente. Questo può essere un grosso problema se qualunque cosa chiama l'editor si aspetta che ritorni solo al termine della modifica (cioè un'operazione sincrona, come nel caso della chiamata vi). Prova un rebase interattivo ( git rebase -i), ad esempio. Se funziona ancora come previsto, allora stai bene.
Blubberdiblub,

7

Questo funziona per me

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe

ho fatto lo stesso .. ora come aprire Notepad ++ per impegnarsi con il messaggio ?? qual è il commando ?? per favore, puoi fare un esempio
Shridutt Kothari,

4
L'aggiunta -multiInstdell'opzione è cruciale qui, come nelle altre risposte.
Blubberdiblub,

1
Questo non va bene per due motivi. Innanzitutto, se il volume C: è NTFS con l'opzione 8.3 nome file disattivata, non esiste C:\Progra~1affatto. In secondo luogo, potrebbero esserci più C:\Progra*directory, quindi il ~1suffisso non è necessariamente quello valido.
kkm

5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""

Questo ha fatto il trucco per me! Successivamente il file .gitconfig è simile a: [core] editor = \ "c: \\ Programmi (x86) \\ Notepad ++ \\ notepad ++. Exe \" -multiInst -nosession -noPlugin
AtliB

Vedi la risposta più votata, che include questa (non ho letto abbastanza lontano)
AtliB


3

Uso l'approccio con la variabile PATH. Il percorso di Notepad ++ viene aggiunto alla variabile PATH del sistema e quindi core.editor viene impostato come segue:

git config --global core.editor notepad++

Inoltre, è possibile aggiungere alcuni parametri aggiuntivi per Notepad ++:

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

(come dettagliato in " Git core.editorper Windows ")

E qui puoi trovare alcune opzioni che puoi usare quando dichiari Notepad ++ Opzioni della riga di comando .


1

AGGIORNAMENTO 2015

Se decomprimete / installate Notepad ++ in c:\utils\npp\e rinominate notepad ++. Exe in npp.exe per semplicità, tutto ciò che dovete fare è

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

Nessuno script wrapper o altro trucco. Non è necessario avere Notepad ++ in PERCORSO.


Aggiornamento 2020: sembra che tu abbia perso le opzioni per aprire una nuova istanza di blocco note. Ho usato da cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"e funziona da entrambi cmd terminalegit bash
oleksa

1

Sto usando Windows 10 e Notepad ++ e ho visualizzato questo messaggio di errore:

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

Quindi eseguo l'installazione in questo modo:

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

e funziona


0

Segui queste istruzioni,

  1. Innanzitutto assicurati di avere Notepad ++ installato sul tuo sistema e che sia il programma predefinito per aprire i file .txt.

  2. Quindi installa gitpad sul tuo sistema. Nota che ho controllato l'ultimo link per il download non funzionante, quindi scaricalo da qui come spiegato .

Quindi mentre commetti dovresti vedere spuntare il tuo editor di testo preferito.


0

Ho usato la soluzione di Starikovs. Ho iniziato con una finestra bash e ho dato i comandi

cd ~
touch .bashrc

Quindi ho trovato il file .bashrc in Windows Explorer, l'ho aperto con Notepad ++ e aggiunto

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

in modo che bash sappia dove trovare Notepad ++. (Avere Notepad ++ nel percorso PATH è una cosa utile da solo!) Quindi ho incollato la sua linea

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

in una finestra bash. Ho avviato una nuova finestra bash per un repository git per testare le cose con il comando

git rebase -i HEAD~10

e il file aperto in Notepad ++ come sperato.


0

Ecco una soluzione con Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Se nessun percorso, non passare alcun percorso

  2. Se il percorso è vuoto, passare un percorso vuoto

  3. Se il percorso non è vuoto, converti in formato Windows.

Quindi ho impostato queste variabili:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR consente allo script di funzionare con Git

  2. GIT_EDITOR consente allo script di funzionare con i comandi Hub

fonte

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.