Wie verwende ich Notepad ++ (oder ein anderes) mit msysgit?

210

Wie verwende ich Notepad ++ (oder einen anderen Editor außer vim) mit msysgit?

Ich habe alles ohne Erfolg versucht:

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
quelle
1
Irgendwelche Fehlermeldungen? Haben Sie versucht, die Umgebungsvariable EDITOR festzulegen?
CSL
4
Versuchen Sie hier zu suchen: stackoverflow.com/questions/10564/…
JasonTrue
Fügte gerade einige Informationen über den Pfad des Skripts hinzu, einschließlich Leerzeichen, wie angefordert.
VonC

Antworten:

76

Update 2010-2011:

zuzumalifeguard ‚s - Lösung (upvoted) ist einfacher als das Original, da es nicht mehr eine Shell - Wrapper - Skript benötigt.

Wie ich in " Wie kann ich einen Editor für die Arbeit mit Git unter Windows einrichten? " Erläutere , bevorzuge ich einen Wrapper, da es einfacher ist, Editoren zu wechseln oder den Pfad eines Editors zu ändern, ohne diese Änderung registrieren zu müssen mit einem git configwieder .
Aber das bin nur ich.


Zusätzliche Informationen : Die folgende Lösung funktioniert mit Cygwin , die Lösung des Zuamlifeguard jedoch nicht.


Ursprüngliche Antwort.

Folgende:

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

funktioniert. Diese Befehle werden als Shell-Skript interpretiert, daher die Idee, alle Windows-Befehlssätze in ein shSkript zu packen.
(Wie Franky kommentiert : "Denken Sie daran, Ihre .shDatei mit Zeilenenden im Unix-Stil zu speichern oder mysteriöse Fehlermeldungen zu erhalten!")

Weitere Details zur SO-Frage Wie kann ich einen Editor für die Arbeit mit Git unter Windows einrichten?

Beachten Sie die -multiInstOption ' ', um für jeden Aufruf von Git eine neue Instanz von Notepad ++ sicherzustellen.

Beachten Sie auch, dass, wenn Sie Git unter Cygwin verwenden (und Notepad ++ von Cygwin verwenden möchten ), scphantm unter " Verwenden von Notepad ++ für Git in Cygwin " erklärt, dass Sie Folgendes beachten müssen:

gitgeht ihm einen cygwinWeg und nppweiß nicht, was er damit anfangen soll

Das Skript in diesem Fall wäre also:

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

Mehrere Zeilen zur besseren Lesbarkeit:

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

Mit "$(cygpath -w "$*")"dem wichtigen Teil hier.

Val kommentierte (und löschte dann), dass Sie die -notabbarOption nicht verwenden sollten :

Es ist nicht sinnvoll, die Registerkarte während des Rebases zu deaktivieren, beeinträchtigt jedoch die allgemeine Benutzerfreundlichkeit des Notepads erheblich, da dies -notabdie Standardeinstellung ist und Sie dies Settings>Preferences>General>TabBar> Hide>uncheckjedes Mal tun müssen, wenn Sie den Editor nach dem Rebase starten. Das ist die Hölle. Du hast die Hölle empfohlen.

Verwenden Sie also lieber:

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

Das ist:

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

Wenn Sie das Skript ' npp.sh' in einen Pfad mit Leerzeichen einfügen möchten (wie in ' c:\program files\...',), haben Sie drei Möglichkeiten:

  • Versuchen Sie entweder, den Pfad in einfache oder doppelte Anführungszeichen zu setzen, wie in:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • oder versuchen Sie es mit der Kurznamen-Notation (nicht narrensicher ):

    git config --global core.editor C:/progra~1/git/npp.sh
  • oder (mein Lieblings-) Platz ' npp.sh' in einem Verzeichnisteil Ihrer %PATH%Umgebungsvariablen. Sie müssten dann keinen Pfad für das Skript angeben.

    git config --global core.editor npp.sh
  • Steiny berichtet in den Kommentaren zu tun:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'
VonC
quelle
Ich habe dies zum Laufen gebracht, indem ich npp.sh im Stammverzeichnis meines Laufwerks platziert habe (dh - C: /npp.sh). Jedes Mal, wenn ich versuche, auf einen Ordner mit Leerzeichen (z. B. D: / Programme (x86) /Git/npp.sh) zuzugreifen, schlägt dies fehl. Wie kann ich Leerzeichen ordnungsgemäß umgehen und / oder dies zum Laufen bringen?
PHLAK
Setzen Sie Anführungszeichen darum. Sehen Sie, wie er in seinem Beispiel Zitate über das Ganze hat?
Fred
2
Die Antwort von zumalifeguard hat bei mir funktioniert. Es ist kein Shell-Skript-Wrapper erforderlich.
Wbinford
1
@wbinford: Ich habe einen Link zu der Antwort von zumalifeguard hinzugefügt (die ich positiv bewertet habe) sowie den Grund, warum ich lieber einen Wrapper als den direkten Befehl registriere.
VonC
1
Ich habe mehrere Kombinationen der oben genannten ausprobiert und keine funktioniert mit Git. Ich habe mein Npp-Skript in meinem Pfad und wenn ich von meiner Cygwin-Konsole aus tippe, "npp {file}" npp öffnet die Datei ganz gut, aber wenn ich eine "git rebase -i" mache, wird npp mit einer leeren Datei anstelle der Datei zusammenführen. Irgendwelche Ideen, warum dies passieren würde?
Scphantm
433
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Oder für 64-Bit-Windows und eine 32-Bit-Installation von Notepad ++:

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

Unter 32-Bit- oder 64-Bit-Windows kann Folgendes in der Befehlszeile ausgegeben werden. Es wird den Speicherort von Notepad ++. Exe aus der Registrierung abrufen und git so konfigurieren, dass es automatisch verwendet wird:

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"

Wenn Sie das Obige aus einer .BAT- oder .CMD-Datei ablegen möchten, müssen Sie% A durch %% A und% B durch %% B ersetzen

zumalifeguard
quelle
9
funktioniert auch in Git-Erweiterungen. Beachten Sie, dass für 64-Bit-Fenster der Eintrag ist"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell
15
Das Dumme ist, dass -notabbar die Registerkartenleiste dauerhaft deaktiviert, nicht nur für diese Sitzung. Wenn Sie Notepad ++ normal starten, müssen Sie in den Einstellungsdialog gehen und die Registerkartenleiste erneut aktivieren.
Oskar Berggren
4
Ich musste verwenden: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... nicht sicher warum.
David Faivre
1
Ich habe Windows 7 64-bit, msysgit v1.9.2 und Notepad ++ v6.6.9 und das funktionierte PERFEKT . Vielen Dank.
Radu Murzea
2
@CoDEmanX Ohne -multiInstes wird wahrscheinlich nur dem bereits laufenden Notepad ++ signalisiert, die Datei zu öffnen und dann sofort zu beenden . Dies kann ein großes Problem sein, wenn der Editor erwartet, dass er erst nach Abschluss der Bearbeitung zurückgegeben wird (dh eine synchrone Operation, wie dies beim Aufruf von vi der Fall ist). Versuchen Sie zum Beispiel eine interaktive rebase ( git rebase -i). Wenn dies immer noch wie erwartet funktioniert, ist alles in Ordnung.
Blubberdiblub
7

Das funktioniert bei mir

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe
Tim Scott
quelle
Ich habe das gleiche getan .. jetzt, wie Notepad ++ öffnen, um mit Nachricht festzuschreiben? Was ist das Kommad? Bitte können Sie ein Beispiel geben
Shridutt Kothari
4
Das Hinzufügen der -multiInstOption ist hier wie in den anderen Antworten von entscheidender Bedeutung.
Blubberdiblub
1
Dies ist aus zwei Gründen nicht gut. Wenn das C: -Volume NTFS mit deaktivierter 8.3-Dateinamenoption ist, gibt es überhaupt keine C:\Progra~1. Zweitens kann es mehrere C:\Progra*Verzeichnisse geben, sodass das ~1Suffix nicht unbedingt das gültige ist.
km
5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""
Jus
quelle
Das hat den Trick für mich getan! Danach sieht die .gitconfig folgendermaßen aus: [core] editor = \ "c: \\ Programme (x86) \\ Notepad ++ \\ notepad ++. Exe \" -multiInst -nosession -noPlugin
AtliB
Siehe Antwort mit der höchsten Stimme, einschließlich dieser (ich habe nicht weit genug gelesen)
AtliB
3

Ich benutze den Ansatz mit der Variablen PATH. Der Pfad zu Notepad ++ wird zur PATH-Variablen des Systems hinzugefügt, und dann wird core.editor wie folgt festgelegt:

git config --global core.editor notepad++

Sie können auch einige zusätzliche Parameter für Notepad ++ hinzufügen:

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

(wie ich in " Git core.editorfür Windows " ausführlich beschrieben habe )

Und hier finden Sie einige Optionen, die Sie beim Angeben von Notepad ++ - Befehlszeilenoptionen verwenden können .

Starikovs
quelle
1

UPDATE 2015

Wenn Sie Notepad ++ entpacken / installieren c:\utils\npp\und Notepad ++. Exe der Einfachheit halber in npp.exe umbenennen, müssen Sie nur noch etwas tun

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

Keine Wrapper-Skripte oder andere Tricks. Notepad ++ muss nicht in PATH enthalten sein.

Dan Dascalescu
quelle
Update 2020: Anscheinend haben Sie die Optionen zum Öffnen einer neuen Editor-Instanz verpasst. Ich habe von cmd.exe verwendet git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"und es funktioniert von beiden cmd terminalundgit bash
oleksa
1

Ich verwende Windows 10 und Notepad ++ und habe folgende Fehlermeldung erhalten:

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

Also mache ich das Setup folgendermaßen:

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

und es funktioniert

Juan Luis Vivas Occhipinti
quelle
0

Befolgen Sie diese Anweisungen,

  1. Stellen Sie zunächst sicher, dass Notepad ++ auf Ihrem System installiert ist und dass es das Standardprogramm zum Öffnen von TXT-Dateien ist.

  2. Installieren Sie dann gitpad auf Ihrem System. Beachten Sie die letzte , was ich den Download - Link überprüft gebrochen war, so laden Sie es von hier wie erklärt .

Während des Festschreibens sollte dann Ihr bevorzugter Texteditor auftauchen.

Aditya P.
quelle
0

Ich habe die Lösung von Starikovs verwendet. Ich begann mit einem Bash-Fenster und gab die Befehle

cd ~
touch .bashrc

Dann fand ich die .bashrc-Datei im Windows Explorer, öffnete sie mit Notepad ++ und fügte hinzu

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

damit bash weiß, wo Notepad ++ zu finden ist. (Notepad ++ im Bash-Pfad zu haben, ist eine nützliche Sache für sich!) Dann habe ich seine Zeile eingefügt

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

in ein Bash-Fenster. Ich habe ein neues Bash-Fenster für ein Git-Repository gestartet, um Dinge mit dem Befehl zu testen

git rebase -i HEAD~10

und die Datei in Notepad ++ wie erhofft geöffnet.

Ivan
quelle
0

Hier ist eine Lösung mit Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Wenn kein Pfad vorhanden ist, übergeben Sie keinen Pfad

  2. Wenn der Pfad leer ist, übergeben Sie den leeren Pfad

  3. Wenn der Pfad nicht leer ist, konvertieren Sie ihn in das Windows-Format.

Dann setze ich diese Variablen:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. Mit EDITOR kann das Skript mit Git arbeiten

  2. Mit GIT_EDITOR kann das Skript mit Hub-Befehlen arbeiten

Quelle

Steven Penny
quelle