Jak skonfigurować edytor do pracy z Git w systemie Windows?


561

Próbuję Git na Windows . Doszedłem do tego, że próbowałem „git commit” i otrzymałem ten błąd:

Terminal jest głupi, ale nie ma VISUAL ani EDITOR. Podaj wiadomość za pomocą opcji -m lub -F.

Zrozumiałem, że potrzebuję zmiennej środowiskowej o nazwie EDITOR. Nie ma problemu. Ustawiłem go tak, aby wskazywał Notatnik. To działało prawie. Domyślny komunikat zatwierdzenia zostanie otwarty w Notatniku. Ale Notatnik nie obsługuje pustych linii. Wyszedłem i dostałem Notepad ++ , ale nie mogę wymyślić, jak skonfigurować Notepad ++ %EDITOR%w taki sposób, aby działał z Git zgodnie z oczekiwaniami.

Nie jestem żonaty z Notepad ++. W tym momencie nie mam nic przeciwko temu, jakiego edytora używam. Chcę tylko móc pisać komunikaty zatwierdzania w edytorze zamiast w wierszu poleceń (z -m).

Ci z was, którzy używają Git w systemie Windows: Jakiego narzędzia używasz do edytowania wiadomości zatwierdzania i co musiałeś zrobić, aby działało?


7
TLDR: umieść pojedyncze cudzysłowy wokół ścieżki do edytora
yoyo

Prawdopodobnie nie jest to pomocne, ale FWIW, po prostu używam zwykłego notatnika. Nie zrobiłem nic, żeby to działało. Po prostu domyślnie
zadziałało

11
Aktualizacja z września 2015 r .: git config core.editor notepadwystarczy już prosty . Zobacz moją zaktualizowaną odpowiedź poniżej .
VonC

Krótka uwaga, że ​​JEdit nie jest odpowiednim edytorem dla git. JEdit otwiera tylko jedną instancję, nawet dla wielu plików. Jeśli był już otwarty, git spowoduje otwarcie nowego pliku, ale wtedy musisz całkowicie zamknąć JEdit, zanim git będzie kontynuował. Nie ma opcji wiersza poleceń, która spowodowałaby, że JEdit otworzył osobną instancję do edycji komunikatu zatwierdzenia.
GrantRobertson

Jeśli ktoś uwielbia Sublime Text 3, oto moje instrukcje, jak go skonfigurować dla Windows ... i Linuksa: Najlepsze ustawienia dla Sublime Text 3 jako edytora git (instrukcje dla Windows i Linux) . @yoyo, TLDR do używania dowolnego edytora tekstowego: umieść pojedyncze cudzysłowy wokół ścieżki do pliku wykonywalnego edytora ORAZ użyj ukośników do przodu (/) NIE odwrotnych ukośników (\) w nazwie ścieżki do pliku wykonywalnego systemu Windows.
Gabriel Staples

Odpowiedzi:


562

Aktualizacja wrzesień 2015 r. (6 lat później)

Ostatnim wydaniu git-for-windows (2.5.3) obejmuje obecnie:

Po skonfigurowaniu git config core.editor notepadużytkownicy mogą teraz używać notepad.exeich jako domyślnego edytora .
Konfiguracja git config format.commitMessageColumns 72zostanie 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_EDITORjest 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/shskrypt 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 --editz DOS lub Git Shell” lub git rebase -i ...„DOS” lub Git Shell.
Polecenia bota wywołują nowe wystąpienie notatnika ++ (stąd -multiInstopcja „) 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\binkatalog do PATHzmiennej ś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]\cmdkatalogu (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 .batlub .sh, aby powiedzieć:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

Dzięki temu notepad ++ otworzy plik zatwierdzania tymczasowego, a nie nowy pusty.


W skrypcie powłoki potrzebujesz podwójnych cudzysłowów wokół $ *, w przeciwnym razie nie będzie działać poprawnie dla ścieżek ze spacjami w nich. Dzięki za dokładne wyjaśnienie - instaluję git (i kilka innych rzeczy) w systemie Windows dla początkujących programistów, a wiersz poleceń jest wystarczająco trudny do odczytania bez zmuszania ich do nauki poleceń vi.
Sarah Mei

Kolejny konkretny przykład: stackoverflow.com/questions/1634161/…
VonC

1
Po odpowiedzi Bennetta nie musisz tworzyć skryptu, możesz po prostu użyć apostrofu „w cudzysłowie”
Tobias Kienzler,

@Tobias: prawda, dołączyłem jego odpowiedź do mojej, a także powód, dla którego nadal wolę odwoływać się do skryptu w moich git configustawieniach.
VonC

6
@NateGlenn Użyj skróconego dir /Xodpowiednika: „ PROGRA~2” dla „ Program Files (x86)”, który jest dobrym nawykiem, do którego można się stosować przy korzystaniu z narzędzi kompatybilnych z wieloma platformami w systemie Windows, co pozwala zmiażdżyć białe znaki.
JJ Zabkar

300

Opierając się na odpowiedzi Darrena , aby użyć Notepad ++, możesz po prostu to zrobić (wszystko w jednym wierszu):

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

Oczywiście C:/Program Files/Notepad++/notepad++.execzęścią powinna być ścieżka do pliku wykonywalnego Notepad ++ w systemie. Na przykład może być C:/Program Files (x86)/Notepad++/notepad++.exe.

Dla mnie to działa jak urok.


10
Ja też! BTW, te przełączniki są wyjaśnione w C: / Program Files / Notepad ++ / user.manual / dokumentacja / notepad-user-manual / command-line.html
Andrew Swan

23
Uważaj na Notepad ++ znajdujący się w `C: \ Program Files (x86)`
mindless.panda

8
W systemie Windows x64 zmień na: git config --global core.editor "'C: / Program Files (x86) / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"
Dariusz

4
Zdaję sobie sprawę, że spóźniłem się na to przyjęcie, ale z ciekawości ktoś wie (a nawet pamięta, po tylu latach), dlaczego można by określić „-notabbar”? Rozumiem argumenty za innymi parametrami (cóż, nie jestem pewien, dlaczego właściwie „-noPlugin”), ale nie ten.
Wilson F

11
@WilsonF Powodem jest to, że MUSISZ opuścić notatnik ++, aby git przestał czekać na dane wejściowe i kontynuował. Nie chcesz otwierać innych kart w tym przypadku Notepad ++, ponieważ wtedy sesja git wyglądałaby na zawieszoną! Te ustawienia działają dokładnie tak: jeśli masz już Notepad ++ już otwarty, otrzymasz nową instancję, która nie pozwala na otwieranie innych plików, i którą musisz zamknąć po zakończeniu, aby git wiedział, że skończyłeś edycję . Działa tak samo dla komunikatów zatwierdzania.
ErikE

50

W każdym razie po prostu się z tym bawiłem i odkryłem, że dla mnie ładnie działa:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

Nie sądzę, że CMD lubi pojedyncze cudzysłowy, więc musisz użyć podwójnych cudzysłowów „, aby określić argument osadzonego spacji”.

Z drugiej strony Cygwin (który, jak sądzę, jest platformą Git's Bash), lubi jedno 'i drugie "; możesz określić ścieżki podobne do CMD, używając /zamiast \, o ile ciąg jest cytowany, tj. w tym przypadku, używając pojedynczych cudzysłowów.

Do -mnadpisania / wskazuje na wykorzystanie wielu redaktorów i nie ma potrzeby dla %*dołączona na końcu.


Dzięki za wyjaśnienie pojedynczego / podwójnego cytatu, teraz ma sens!
Patrick McDonald

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"działa jak urok dla mnie.
Vlad Holubiev

Użyłem `git config --global code.editor" 'C: \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "', jednak po uruchomieniu" git commit "otwiera się edytor Notatnika. Czy są jakieś przemyślenia na temat tego, dlaczego tak jest? Z góry dziękuję.
Ryan Chase

@RyanChase Usuń lokalny wpis konfiguracji z ./git/config np.editor = notepad
Ricky Boyce

1
Git Bash działa pod MingW64, a nie Cygwin. Cygwin ma swój własny plik binarny Git.
Hans Deragon

27

Edycja: Po aktualizacji do Vima 7.3 doszedłem do wniosku, że najczystszym i najłatwiejszym sposobem na to jest:

  1. Dodaj główny folder Vima do swojej ścieżki (kliknij prawym przyciskiem myszy Mój komputerWłaściwościZaawansowaneZmienne środowiskowe )

  2. Uruchomić to:

    git config --global core.editor "gvim --nofork '%*'"
    

Jeśli zrobisz to w ten sposób, jestem całkiem pewien, że będzie również działać z Cygwinem.

Oryginalna odpowiedź:

Nawet z kilkoma odpowiedziami związanymi z Vimem miałem problem z uruchomieniem go z gVimem pod Windows (nie używając pliku wsadowego lub% EDITOR% lub Cygwin).

To, co ostatecznie osiągnąłem, jest ładne i czyste, i czerpie z kilku rozwiązań tutaj:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Jedną chwilę zajęło mi to, że nie są to odwrotne ukośniki w stylu Windows. Są to normalne ukośniki.


1
Jeśli vim jest zainstalowany Program Files(x86), musisz oczywiście zmienić ścieżkę.
Swapnil

15

Notepad ++ działa dobrze, chociaż wybrałem trzymanie się Notatnika, -m, a czasem nawet wbudowanej „edycji”.

Problem, który napotykasz za pomocą Notepad ++, jest związany ze sposobem uruchamiania przez Git pliku wykonywalnego edytora. Moim rozwiązaniem jest ustawienie zmiennej środowiskowej EDITORna plik wsadowy zamiast na rzeczywisty plik wykonywalny edytora, który wykonuje następujące czynności:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAITnakazuje zatrzymanie sesji wiersza poleceń, dopóki aplikacja nie zostanie zamknięta, dzięki czemu będziesz mógł edytować zawartość swojego serca, podczas gdy Git z radością na ciebie czeka. % * przekazuje wszystkie argumenty do pliku wsadowego do Notepad ++.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

Miałem problem z uruchomieniem tego w PowerShell. Ta metoda ( stackoverflow.com/questions/10564/… ) działała jednak dobrze.
Peter Stephens

11

WordPad !

Cieszę się, że korzystam z Vima, ale odkąd próbuję przedstawić Git firmie, chciałem czegoś, co wszyscy mielibyśmy, i stwierdziłem, że WordPad wydaje się działać dobrze (tj. Git czeka, aż skończysz edytować i zamknąć okno).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

To używa Git Bash na msysgit; Nie próbowałem z wiersza polecenia systemu Windows (jeśli to robi jakąkolwiek różnicę).


Podobała mi się prostota tego, ale nie wyszło mi to od razu po wyjęciu z pudełka. Oto, co próbowałem. Otrzymuję następujący komunikat o błędzie: błąd: Wystąpił problem z edytorem „C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe”.
Shaun Luttin

3
Cytaty są niepoprawne. Musisz umieścić podwójne cudzysłowy poza pojedynczymi cudzysłowami . Oznacza to, że użyj „C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe” ”, a wtedy zadziała.
Shaun Luttin

Możesz także skorzystać z ukośników (/) zamiast ukośników odwrotnych (\).
Chris Jones

1
Ponadto prawdopodobnie najlepiej jest użyć do tego „git config --global” zamiast po prostu „git config”. Najprawdopodobniej chcesz, aby to ustawienie dotyczyło wszystkich repozytoriów git na stacji roboczej, a nie tylko tego, w którym jesteś teraz.
Chris Jones

@ChrisJones, Nie ma sensu w tym przypadku, ponieważ „pliki programów” mają spację między nimi.
Pacerier

9

Używam również Cygwin w systemie Windows, ale z gVimem (w przeciwieństwie do Vima opartego na terminalu ).

Aby to zadziałało, wykonałem następujące czynności:

  1. Utworzono jednowierszowy plik wsadowy (o nazwie git_editor.bat), który zawiera następujące elementy: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Umieszczony git_editor.batw moim PATH.
  3. Zestaw GIT_EDITOR=git_editor.bat

Po wykonaniu tej czynności git commititd. Poprawnie wywoła plik wykonywalny gVim.

UWAGA 1: --noforkOpcja gVim zapewnia, że ​​blokuje się, dopóki nie zostanie napisany komunikat zatwierdzenia.

UWAGA 2: Cytaty wokół ścieżki do gVim są wymagane, jeśli masz spacje na ścieżce.

UWAGA 3: Cytaty wokół „% *” są potrzebne na wypadek, gdyby Git przekroczył ścieżkę do pliku ze spacjami.


Dla osób używających msysgit (nie gita cygwina) mogłem to nieco uprościć. stackoverflow.com/questions/10564/…
Nick Knowlson

Po drugiej myśli, że może również działać z cygwinem, nie jestem całkowicie pewien
Nick Knowlson

8

Dzięki społeczności Stack Overflow ... i małym badaniom udało mi się zdobyć mojego ulubionego edytora, EditPad Pro , do pracy jako główny edytor w msysgit 1.7.5.GIT i TortoiseGit v1.7.3.0 w systemie Windows XP SP3. ..

Zgodnie z powyższą radą dodałem ścieżkę do skryptu Bash dla edytora kodu ...

git config --global core.editor c:/msysgit/cmd/epp.sh

Jednak po kilku nieudanych próbach wyżej wymienionych rozwiązań ... w końcu udało mi się to uruchomić. Zgodnie z dokumentacją EditPad Pro dodanie flagi „/ newinstance” pozwoliłoby powłoce czekać na dane wejściowe edytora ...

Flaga „ / newinstance ” była w moim przypadku kluczem ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

Tak, ten podwójny ukośnik dla parametru newinstance powinien znajdować się w dokumentach Editpad. Dzięki, że to zauważyłeś!
gwideman

EditPad Pro wymaga przełączników linii poleceń, /newinstanceaby mieć dokładnie jeden ukośnik. Jest to dość normalne w przypadku aplikacji Windows. Jeśli wywołujesz EditPad z powłoki UNIX, musisz użyć dowolnego mechanizmu, który oferuje powłoka, aby uciec przed ukośnikiem, aby nie widział przełącznika jako ścieżki bezwzględnej i przekazał pojedynczy dosłowny ukośnik do wiersza poleceń EditPada.
Jan Goyvaerts,

2
Jeśli masz EditPad Pro 7 i chcesz wywołać EditPad Pro z procesu, który chce czekać na proces EditPada, powinieneś /waitprzełączyć przełącznik w linii poleceń EditPad. Możesz używać /waitz lub bez, /newinstanceaby kontrolować, czy nowe okno EditPad powinno zostać otwarte, czy też istniejące okno powinno zostać ponownie użyte. Proces uruchomiony przez skrypt będzie czekał na zamknięcie pliku bez względu na to, czy okno zostało utworzone, czy ponownie użyte. EditPad Pro 6 i wcześniejsze nie obsługują /wait.
Jan Goyvaerts,

@JanGoyvaerts ~ Dzięki za /waitwskazówkę dotyczącą flagi, proszę pana ... :)
Eddie B,

Nie byłem w stanie sprawić, że EditPad Lite działa dla mnie, korzystając z powyższych instrukcji. Być może dlatego, że próbowałem wywołać EditPad (przez Git) przy użyciu terminala Windows zamiast Git Bash lub innej powłoki UNIX. Dla mnie zadziałała bezpośrednia edycja [core]sekcji .gitconfig w celu włączenia linii editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473,

8

W przypadku Atoma możesz to zrobić

git config --global core.editor "atom --wait"

i podobne w przypadku Visual Studio Code

git config --global core.editor "code --wait"

które otworzy okno Atom lub Visual Studio Code do zatwierdzenia,

lub w przypadku wysublimowanego tekstu :

git config --global core.editor "subl -n -w"

O wiele prostsze i efektywniejsze. Dziękuję Ci.
rom5jp

6

Edytuj plik .gitconfig w folderze c: \ Users \ YourUser i dodaj:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

6

Jest to jeden z objawów większych problemów. Zwłaszcza, że ​​masz coś ustawienia TERM=dumb. Inne rzeczy, które nie działają poprawnie, to lesspolecenie, które mówi, że nie masz w pełni funkcjonalnego terminala.

Wydaje się, że jest to najczęściej spowodowane ustawieniem TERM na coś w globalnych zmiennych środowiska Windows. Dla mnie problem pojawił się, gdy zainstalowałem Strawberry Perl, niektóre informacje na ten temat znajdują się w błędzie msysgit tego problemu, a także kilka rozwiązań.

Pierwszym rozwiązaniem jest naprawienie go w ~ / .bashrc poprzez dodanie:

export TERM=msys

Możesz to zrobić z wiersza polecenia Git Bash w następujący sposób:

echo "export TERM=msys" >> ~/.bashrc

Innym rozwiązaniem, które ostatecznie jest tym, co zrobiłem, ponieważ nie dbam o powody, dla których Strawberry Perl dodaje TERM=dumbdo moich ustawień środowiska, to pójść i usunąć TERM=dumbzgodnie z opisem w tym komentarzu do raportu o błędzie msysgit .

Panel sterowania / System / Advanced / Environment Variables ... (lub podobny, w zależności od wersji systemu Windows) to miejsce, w którym w systemie Windows ustawia się lepkie zmienne środowiskowe. Domyślnie TERM nie jest ustawiony. Jeśli jest tam ustawiony TERM, to ty (lub jeden z zainstalowanych programów - np. Strawberry Perl) ustawiłeś go. Usuń to ustawienie i wszystko będzie dobrze.

Podobnie, jeśli używasz Strawberry Perl i zależy ci na kliencie CPAN lub czymś takim, możesz zostawić to TERM=dumbsamo i użyć unset TERMw swoim pliku ~ / .bashrc, co będzie miało podobny efekt jak ustawienie wyraźnego terminu jak wyżej.

Oczywiście, wszystkie pozostałe rozwiązania są poprawne, ponieważ możesz użyć, git config --global core.editor $MYFAVORITEEDITORaby upewnić się, że Git używa twojego ulubionego edytora, gdy trzeba go uruchomić.


Dziękuje bardzo! Miałem ten problem z powodu Truskawkowego Perla i doprowadzało mnie to do szału! dziękuję za zwrócenie na to uwagi
Dmitrij Avtonomov


4

Miałem dobrze PortableGit 1.6, ale po aktualizacji do wersji Windows PortableGit 1.7 miałem problemy. Niektóre polecenia Git otwierają Notepad ++. Exe dobrze, ale niektóre nie, zwłaszcza Git rebase zachowuje się inaczej.

Problem polega na tym, że niektóre polecenia uruchamiają proces cmd systemu Windows, a niektóre korzystają z procesu cmd systemu Unix. Chcę nadać atrybuty uruchamiania edytorowi Notepad ++, więc muszę mieć dostosowany skrypt. Moje rozwiązanie jest takie.

  1. Utwórz skrypt, aby uruchomić odpowiedni edytor tekstu. Skrypt wygląda dziwnie, ale obsługuje zarówno wersje Windows, jak i Unix.

    c: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. Ustaw globalną zmienną core.editor

    Skrypt został zapisany w folderze git / cmd, więc jest już w ścieżce gitconsole. Jest to obowiązkowe, ponieważ pełna ścieżka może nie działać poprawnie.

    git config --global core.editor "git-editor.bat"
    

Teraz mogę uruchomić polecenia git commit -a i git rebase -i master . Spróbuj, jeśli masz problemy z narzędziem Git Windows.


4

Używam Git na wielu platformach i lubię używać tych samych ustawień Git na wszystkich z nich. (W rzeczywistości mam wszystkie moje pliki konfiguracyjne pod kontrolą wersji Git i umieszczam klon repozytorium Git na każdym komputerze). Rozwiązanie, które wymyśliłem, to:

Mogę ustawić edytor do giteditor

git config --global core.editor giteditor

Następnie tworzę dowiązanie symboliczne o nazwie giteditor, które jest w mojej ŚCIEŻCE . (Mam osobisty katalog bin , ale gdziekolwiek w ŚCIEŻCE działa.) Ten link wskazuje na mojego obecnego edytora. Na różnych komputerach i platformach używam różnych edytorów, więc oznacza to, że nie muszę zmieniać mojej uniwersalnej konfiguracji Git ( .gitconfig ), tylko link, na który wskazuje gitor .

Dowiązania symboliczne są obsługiwane przez każdy znany mi system operacyjny, chociaż mogą używać różnych poleceń. W systemie Linux używasz ln -s . W przypadku systemu Windows, należy użyć cmd wbudowany mklink . Mają różne składnie (na które powinieneś spojrzeć), ale to wszystko działa tak samo, naprawdę.


W rzeczywistości próbowałem tego na Windows7 i nie działa z msys git. Mówierror: cannot spawn giteditor: No such file or directory
DanielSank

4

W oparciu o sugestię VonC zadziałało to dla mnie (doprowadzało mnie do szału):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

Pominięcie -waitmoże powodować problemy, szczególnie jeśli pracujesz z Gerrit i zmieniasz identyfikatory, które należy ręcznie skopiować na dół wiadomości zatwierdzenia.


4

Musiałem wykonać obie poniższe czynności, aby Git uruchomił Notepad ++ w systemie Windows:

  • Dodaj następujące .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Zmodyfikuj skrót, aby uruchomić powłokę Git Bash, aby działał jako administrator, a następnie użyj go do uruchomienia powłoki Git Bash. Zgadywałem, że pozycja menu kontekstowego „Git Bash tutaj” nie uruchamia Notepad ++ z wymaganymi uprawnieniami.

Po wykonaniu obu powyższych czynności zadziałało.


3

Używam Cygwin w systemie Windows, więc używam:

export EDITOR="emacs -nw"

To -nwznaczy no-windows, tzn. Powiedz Emacsowi, aby nie próbował używać X Window .

Skróty klawiszowe Emacsa nie działają dla mnie z powłoki Windows, więc użyłbym tego tylko z powłoki Cygwin ... ( zalecane jest rxvt ).


3

Oto moja konfiguracja używania Geany jako edytora dla Git:

git config --global core.editor C:/path/to/geany.bat

o następującej treści w geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

Działa zarówno w konsoli DOS, jak i msysgit.


2
VonC odpowiedział na temat notatnika ++, moja odpowiedź jest dla Geany?
CharlesB

2

Wygląda na to, że Git nie znajdzie edytora, jeśli na ścieżce są spacje. Będziesz musiał umieścić plik wsadowy wspomniany w odpowiedzi Patricka w ścieżce spacji.


3
Ten format działa dobrze dla ścieżek ze spacjami: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "", więc może być praktyczne uniknięcie tworzenia pliku wsadowego
Carl

2

Miałem trudności z przekonaniem Gita do współpracy z WordPadem , Komodo Edit i praktycznie każdym innym edytorem, który mu udostępniam. Najczęściej otwarty do edycji, ale Git najwyraźniej nie czeka na zapisanie / zamknięcie.

Jako kulę właśnie to robiłem, tj

git commit -m "Fixed the LoadAll method"

aby utrzymać ruch. Zazwyczaj moje komunikaty zatwierdzania są nieco krótsze, niż powinny być, ale najwyraźniej jest trochę pracy w wersji Git dla Windows.

GitGUI też nie jest taki zły. To wymaga trochę orientacji, ale potem działa całkiem dobrze.


2

Wolę używać Emacsa. Przygotowanie go może być trochę trudne.

  1. Pobierz Emacsa i rozpakuj go gdzieś jak c:\emacs.
  2. Uruchom c:\emacs\bin\addpm.exe. Jeśli używasz systemu Windows Vista lub nowszego, musisz kliknąć prawym przyciskiem myszy i „Uruchom jako administrator”. Spowoduje to umieszczenie plików wykonywalnych na twojej ścieżce.
  3. Dodaj (server-start)gdzieś w swoim .emacspliku. Zobacz najczęściej zadawane pytania dotyczące systemu Emacs dla systemu Windows, aby dowiedzieć się, gdzie umieścić .emacsplik.
  4. git config --global core.editor emacsclientw

Git będzie teraz otwierać pliki w ramach istniejącego procesu Emacsa. Będziesz musiał uruchomić istniejący proces ręcznie z c:\emacs\bin\runemacs.exe.


1

Udało mi się uruchomić wersję środowiska, ustawiając zmienną EDITOR za pomocą cudzysłowów i /:

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"

1

Właśnie miałem ten sam problem i znalazłem inne rozwiązanie. Dostawałem

error: There was a problem with the editor 'ec'

Mam VISUAL=eci plik wsadowy wywołany ec.batna mojej ścieżce, który zawiera jeden wiersz:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

To pozwala mi edytować pliki z wiersza poleceń za pomocą ec <filename>, a VISUALustawienie oznacza, że ​​większość programów unixy też je odbiera. Git wydaje się szukać ścieżki inaczej do moich innych poleceń chociaż - gdy spojrzałem na git commitw Process Monitor Widziałem to wyglądać w każdym folderze na drodze do eci ec.exe, ale nie ec.bat. Dodałem kolejną zmienną środowiskową ( GIT_EDITOR=ec.bat) i wszystko było w porządku.


1

Używam GitHub dla Windows, który jest ładną opcją wizualną. Ale wolę również wiersz poleceń, więc aby działał, gdy otwieram repozytorium w powłoce Git, po prostu ustawiam następujące:

git config --global core.editor vim

co działa świetnie.



1

Znalazłem aa pięknie proste rozwiązanie pisał tutaj - chociaż mogą być błędem w ścieżce, w której trzeba skopiować nad „subl” plik podany przez autora.

Korzystam z systemu Windows 7 x64 i musiałem umieścić plik „subl” w moim /Git/cmd/folderze, aby działał.

Jednak działa jak urok.


1

Atom i Windows 10

  1. Kliknąłem prawym przyciskiem myszy ikonę Atom na pulpicie i kliknąłem właściwości.
  2. Skopiowano ścieżkę lokalizacji „Rozpocznij w”
  3. Spojrzał tam za pomocą Eksploratora Windows i znalazł „atom.exe”.
  4. Wpisałem to w Git Bash:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

Uwaga: zmieniłem wszystko \na /. Utworzyłem .bashrc w moim katalogu domowym i /ustawiłem swój katalog domowy i zadziałało, więc założyłem, że /będzie to dobra droga.


sprawdź ten adres URL , przydatne będzie podniesienie jakości treści
Willie Cheng

@willie Dziękuję, sformatowałem tekst i dodałem kilka tagów. Mam nadzieję, że to trochę poprawi.
Jonathan Ramos

0

Oto rozwiązanie z Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Jeśli nie ma ścieżki, nie podawaj ścieżki

  2. Jeśli ścieżka jest pusta, podaj pustą ścieżkę

  3. Jeśli ścieżka nie jest pusta, przekonwertuj na format Windows.

Następnie ustawiam te zmienne:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDYTOR pozwala skryptowi współpracować z Git

  2. GIT_EDITOR pozwala skryptowi współpracować z poleceniami Hub

Źródło


0

Działa to dla mnie przy użyciu Cygwin i TextPad 6 (EDYCJA: działa również z TextPad 5, o ile wprowadzisz oczywistą zmianę w skrypcie) i przypuszczalnie model może być również używany w innych edytorach:

Plik ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

Plik ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

Ten jednowarstwowy działa również:

Plik ~/script/textpad.sh(opcja 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"

0

To działało dla mnie:

  1. Dodaj katalog zawierający plik wykonywalny edytora do zmiennej PATH . (Np. „C: \ Program Files \ Sublime Text 3 \” )
  2. Zrestartuj swój komputer.
  3. Zmień globalną zmienną Git core.editor na nazwę pliku wykonywalnego edytora bez rozszerzenia „.exe” (np. Git config --global core.editor sublime_text)

Otóż ​​to!

UWAGA: Sublime Text 3 to edytor, którego użyłem w tym przykładzie.


Czy po skonfigurowaniu w ten sposób Sublime Text 3 otwiera wiele wystąpień, czy obsługuje fakt, że git potrzebuje go zamknąć, aby zasygnalizować koniec edycji?
James World

1
Myślę, że otworzy nowe okno. Możesz dodać przełącznik --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.