Jak korzystać z Notepad ++ (lub innego) z msysgit?


210

Jak korzystać z Notepad ++ (lub innego edytora oprócz vim) z msysgit?

Próbowałem wszystkich następujących bezskutecznie:

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
Jakieś komunikaty o błędach? Czy próbowałeś ustawić zmienną środowiskową EDITOR?
csl

4
Spróbuj
zajrzeć

Właśnie dodałem informacje o ścieżce skryptu, w tym spacje, zgodnie z żądaniem.
VonC

Odpowiedzi:


76

Aktualizacja 2010-2011:

zumalifeguard „s rozwiązanie (upvoted) jest prostszy niż oryginalne, gdyż nie trzeba już powłoki otoki skrypt.

Jak wyjaśniam w temacie „ Jak skonfigurować edytor do pracy z Git w systemie Windows? ”, Wolę opakowanie, ponieważ łatwiej jest przełączać edytory lub zmieniać ścieżkę jednego edytora bez konieczności rejestrowania wspomnianej zmiany. z git configponownie .
Ale to tylko ja.


Informacje dodatkowe : poniższe rozwiązanie działa z Cygwin , a rozwiązanie zuamlifeguard nie.


Oryginalna odpowiedź.

Następujące:

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

działa. Te polecenia są interpretowane jako skrypt powłoki, stąd pomysł zawinięcia dowolnego zestawu poleceń systemu Windows w shskrypt.
(Jak komentuje Franky : „Pamiętaj, aby zapisać plik z zakończeniami linii w stylu uniksowym lub otrzymać tajemnicze komunikaty o błędach!”).sh

Więcej informacji na temat pytania SO Jak skonfigurować edytor do pracy z Git w systemie Windows?

Zwróć uwagę na -multiInstopcję „ ”, aby zapewnić nowe wystąpienie notatnika ++ dla każdego połączenia z Git.

Zauważ też, że jeśli używasz Git na Cygwin (i chcesz używać Notepad ++ z Cygwin ), to scphantm wyjaśnia w „ używaniu Notepad ++ dla Git wewnątrz Cygwin ”, że musisz zdawać sobie sprawę, że:

gitprzechodzi cygwinścieżkę i nppnie wie, co z tym zrobić

W takim przypadku skrypt byłby następujący:

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

Wiele linii dla czytelności:

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

Będąc "$(cygpath -w "$*")"tutaj ważną częścią.

Val skomentował (a następnie usunął), że nie należy używać -notabbaropcji:

Nie ma sensu wyłączanie karty podczas zmiany bazy, ale ma duży wpływ na ogólną użyteczność Notatnika, ponieważ -notabstaje się ustawieniem domyślnym i musisz za Settings>Preferences>General>TabBar> Hide>uncheckkażdym razem uruchamiać notatnik po zmianie bazy. To jest piekło. Poleciłeś piekło.

Więc użyj raczej:

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

To jest:

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

Jeśli chcesz umieścić skrypt „ npp.sh” w ścieżce ze spacjami (jak w „ c:\program files\...”,), masz trzy opcje:

  • Spróbuj zacytować ścieżkę (pojedyncze lub podwójne cudzysłowy), jak w:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • lub wypróbuj zapis krótkiej nazwy (nie jest głupi):

    git config --global core.editor C:/progra~1/git/npp.sh
  • lub (moje ulubione) miejsce ' npp.sh' w części katalogu %PATH%zmiennej środowiskowej. Nie trzeba wtedy określać ścieżki do skryptu.

    git config --global core.editor npp.sh
  • Steiny informuje w komentarzach, że musi:

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

Dostałem to do pracy, umieszczając npp.sh w katalogu głównym mojego dysku (tj. - C: /npp.sh). Za każdym razem, gdy próbuję celować w folder ze spacjami (tj. - D: / Program Files (x86) /Git/npp.sh), to kończy się niepowodzeniem, jaki jest właściwy sposób na uniknięcie spacji i / lub uruchomienie go?
PHLAK,

umieść wokół niego cytaty. Widzisz, jak w swoim przykładzie zacytował całą sprawę?
Fred

2
Odpowiedź zumalifeguard zadziałała dla mnie. Nie wymaga opakowania powłoki skryptu.
wbinford,

1
@wbinford: Dodałem link do odpowiedzi zumalifeguard (którą głosowałem), a także powód, dla którego wolę zarejestrować opakowanie, niż polecenie bezpośrednie.
VonC

1
Próbowałem wielu kombinacji powyższych i żadna nie działa z git. mam mój skrypt NPP na mojej ścieżce i jeśli z mojej konsoli Cygwin wpisuję, „npp {plik}” npp otwiera plik w porządku, ale kiedy robię „git rebase -i” npp otwiera się z pustym plikiem zamiast scal plik. jakieś pomysły, dlaczego tak się stanie?
scphantm

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

Lub w 64-bitowym systemie Windows i 32-bitowej instalacji Notepad ++:

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

Lub w wierszu poleceń można wydać następujące polecenia w 32-bitowym lub 64-bitowym systemie Windows. Wyciągnie z rejestru lokalizację notatnika ++. Exe i skonfiguruje git, aby używał go automatycznie:

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"

Jeśli chcesz umieścić powyższe z pliku .BAT lub .CMD, musisz zamienić% A na %% A i% B na %% B


9
działa również w rozszerzeniach git. zwróć uwagę, że w przypadku 64-bitowych okien wpis jest"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell,

15
Głupie jest to, że -notabbar na stałe wyłączy pasek kart, nie tylko dla tej sesji. Podczas normalnego uruchamiania w Notatniku ++ należy przejść do okna dialogowego ustawień i ponownie włączyć pasek kart.
Oskar Berggren

4
Musiałem użyć: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... nie jestem pewien, dlaczego.
David Faivre

1
Mam Windows 7 64-bit, msysgit v1.9.2 i Notepad ++ v6.6.9 i to działało DOSKONALE . Dzięki.
Radu Murzea

2
@CoDEmanX Bez -multiInsttego prawdopodobnie zasygnalizuje już działającemu Notepad ++, aby otworzyć plik, a następnie natychmiast wyjść. Może to stanowić duży problem, jeśli jakiekolwiek wywołanie edytora oczekuje, że zwróci się tylko po zakończeniu edycji (tj. Operacji synchronicznej, jak ma to miejsce w przypadku wywoływania vi). Spróbuj na przykład interaktywnej rebase ( git rebase -i). Jeśli to nadal działa zgodnie z oczekiwaniami, nic ci nie jest.
blubberdiblub

7

To działa dla mnie

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

zrobiłem to samo .. teraz jak otworzyć notatnik ++, aby zatwierdzić z komunikatem? co to jest commad? czy możesz podać przykład
shridutt kothari,

4
Dodanie -multiInstopcji jest tutaj kluczowe, podobnie jak w innych odpowiedziach.
blubberdiblub

1
To nie jest dobre z dwóch powodów. Po pierwsze, jeśli wolumin C: to NTFS z wyłączoną opcją nazwy pliku 8.3, nie ma go C:\Progra~1wcale. Po drugie, może istnieć wiele C:\Progra*katalogów, więc ~1przyrostek niekoniecznie jest poprawny.
kkm

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

To załatwiło sprawę! Następnie .gitconfig wygląda następująco: [core] editor = \ "c: \\ Program Files (x86) \\ Notepad ++ \\ notepad ++. Exe \" -multiInst -nosession -noPlugin
AtliB

Zobacz najwyższą głosowaną odpowiedź, która obejmuje to (nie przeczytałem wystarczająco dużo)
AtliB


3

Używam tego podejścia ze zmienną PATH. Ścieżka do Notepad ++ jest dodawana do zmiennej systemowej PATH, a następnie ustawiany jest core.editor w następujący sposób:

git config --global core.editor notepad++

Możesz także dodać dodatkowe parametry dla Notepad ++:

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

(jak szczegółowo opisano w „ Git core.editordla Windows ”)

Tutaj możesz znaleźć opcje, których możesz użyć, określając opcje wiersza poleceń Notepad ++ .


1

AKTUALIZACJA 2015

Jeśli rozpakujesz / zainstalujesz Notepad ++ c:\utils\npp\i zmienisz nazwę notatnika ++. Exe na npp.exe dla uproszczenia, wszystko, co musisz zrobić, to

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

Żadnych skryptów opakowania ani innych sztuczek. Nie trzeba mieć Notepad ++ w PATH.


Aktualizacja 2020: wygląda na to, że przegapiłeś opcje otwarcia nowej instancji notatnika. Użyłem z cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"i działa zarówno zcmd terminalgit bash
oleksa

1

Korzystam z systemu Windows 10 i notatnika ++ i otrzymywałem ten komunikat o błędzie:

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

Więc konfiguruję w ten sposób:

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

i to działa


0

Postępuj zgodnie z tymi instrukcjami,

  1. Najpierw upewnij się, że masz zainstalowany notepad ++ w swoim systemie i że jest to domyślny program do otwierania plików .txt.

  2. Następnie zainstaluj gitpad w swoim systemie. Zauważ, że ostatnio sprawdziłem, czy link do pobrania jest uszkodzony, więc pobierz go stąd, jak wyjaśniono .

Następnie podczas zatwierdzania powinieneś zobaczyć swój ulubiony edytor tekstowy.


0

Użyłem rozwiązania starikovs. Zacząłem od okna bash i wydałem polecenia

cd ~
touch .bashrc

Potem znalazłem plik .bashrc w Eksploratorze Windows, otworzyłem go za pomocą notatnika ++ i dodałem

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

aby bash wiedział, gdzie znaleźć Notepad ++. (Posiadanie Notepad ++ w bash PATH jest przydatne samo w sobie!) Następnie wkleiłem jego linię

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

w oknie bash. Uruchomiłem nowe okno bash dla repozytorium git do testowania rzeczy za pomocą polecenia

git rebase -i HEAD~10

i plik został otwarty w Notepad ++ zgodnie z oczekiwaniami.


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. EDITOR pozwala skryptowi współpracować z Git

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

Źródło

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.