Aktualizacja wrzesień 2015 r. (6 lat później)
Ostatnim wydaniu git-for-windows (2.5.3) obejmuje obecnie:
Po skonfigurowaniu git config core.editor notepad
użytkownicy mogą teraz używać notepad.exe
ich jako domyślnego edytora .
Konfiguracja git config format.commitMessageColumns 72
zostanie odebrana przez opakowanie notatnika i zawinie wiersz komunikatu zatwierdzenia po edycji przez użytkownika.
Zobacz commit 69b301b przez Johannesa Schindelina ( dscho
) .
A Git 2.16 (Q1 2018) wyświetli komunikat informujący użytkownika, że czeka on na zakończenie edycji podczas tworzenia spawacza w przypadku, gdy edytor otworzy się na ukryte okno lub gdzieś niejasne i użytkownik się zgubi.
Zobacz commit abfb04d (07 grudnia 2017 r.) I commit a64f213 (29 listopada 2017 r.) Autor: Lars Schneider ( larsxschneider
) .
Pomagał: Junio C Hamano ( gitster
) .
(Połączone przez Junio C Hamano - gitster
- w commit 0c69a13 , 19 grudnia 2017)
launch_editor()
: wskazuje, że Git czeka na dane wprowadzone przez użytkownika
Kiedy grafika GIT_EDITOR
jest spawnowana przez polecenie Git, które otwiera się i czeka na dane wejściowe użytkownika (np. „ git rebase -i
”), Wówczas okno edytora może być zasłonięte przez inne okna.
Użytkownik może patrzeć na oryginalne okno terminala Git, nawet nie zdając sobie sprawy, że musi wejść w interakcję z innym oknem, aby Git mógł kontynuować. Do tego użytkownika pojawia się Git.
Wydrukuj wiadomość, że Git czeka na dane wejściowe edytora w oryginalnym terminalu i pozbądź się go, gdy edytor powróci, jeśli terminal obsługuje usuwanie ostatniego wiersza
Oryginalna odpowiedź
Właśnie przetestowałem go z git w wersji 1.6.2.msysgit.0.186.gf7512 i Notepad ++ 5.3.1
Wolę nie ustawiać zmiennej EDITOR, więc próbowałem:
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"
To zawsze daje:
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" %*'.
Jeśli zdefiniuję npp.bat, w tym:
"c:\Program Files\Notepad++\notepad++.exe" %*
i piszę:
C:\prog\git>git config --global core.editor C:\prog\git\npp.bat
Działa po prostu z sesji DOS, ale nie z powłoki git .
(nie że w przypadku mechanizmu konfiguracji core.editor skrypt z „ start /WAIT...
” nie działałby, ale otwierałby tylko nowe okno DOS)
Odpowiedź Bennetta wspomina o możliwości uniknięcia dodania skryptu, ale o bezpośrednim odwołaniu do samego programu między prostymi cytatami . Zwróć uwagę na kierunek cięcia! Użyj /
NIE, \
aby oddzielić foldery w nazwie ścieżki!
git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Lub jeśli jesteś w systemie 64-bitowym:
git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Ale wolę używać skryptu (patrz poniżej): w ten sposób mogę grać z różnymi ścieżkami lub różnymi opcjami bez konieczności ponownej rejestracji git config
.
Rzeczywistym rozwiązaniem (ze skryptem) było uświadomienie sobie, że:
to, o czym mówisz w pliku konfiguracyjnym, to tak naprawdę /bin/sh
skrypt powłoki ( ) , a nie skrypt DOS.
Więc co działa to:
C:\prog\git>git config --global core.editor C:/prog/git/npp.bat
z C:/prog/git/npp.bat
:
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"
lub
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"
Przy tym ustawieniu mogę zrobić „ git config --global --edit
z DOS lub Git Shell” lub git rebase -i ...
„DOS” lub Git Shell.
Polecenia bota wywołują nowe wystąpienie notatnika ++ (stąd -multiInst
opcja „) i czekają na zamknięcie tego wystąpienia przed kontynuowaniem.
Zauważ, że używam tylko „/”, a nie \
„. I zainstalowałem msysgit za pomocą opcji 2. (Dodaj git\bin
katalog do PATH
zmiennej środowiskowej, ale bez przesłonięcia niektórych wbudowanych narzędzi systemu Windows)
Fakt, że otoki notatnika ++ nazywa się .bat, nie jest ważne.
Lepiej byłoby nazwać go „npp.sh” i umieścić go w [git]\cmd
katalogu (lub w dowolnym katalogu, do którego odwołuje się zmienna środowiskowa PATH).
Zobacz też:
lightfire228 dodaje w komentarzach :
Dla każdego, kto ma problem z tym, że N ++ po prostu otwiera pusty plik, a git nie przyjmuje wiadomości zatwierdzenia, zobacz „ Przerwanie zatwierdzania z powodu pustej wiadomości ”: zmień swój plik .bat
lub .sh
, aby powiedzieć:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
Dzięki temu notepad ++ otworzy plik zatwierdzania tymczasowego, a nie nowy pusty.