Comment utiliser Notepad ++ (ou autre) avec msysgit?

210

Comment utiliser Notepad ++ (ou tout autre éditeur en plus de vim) avec msysgit?

J'ai essayé tout ce qui suit en vain:

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
la source
1
Des messages d'erreur? Avez-vous essayé de définir la variable d'environnement EDITOR?
csl
4
Essayez de regarder ici: stackoverflow.com/questions/10564/…
JasonTrue
Juste ajouté quelques informations sur le chemin du script, y compris les espaces, comme demandé.
VonC

Réponses:

76

Mise à jour 2010-2011:

zumalifeguard de solution (upvoted) est plus simple que celui d' origine, car il n'a pas besoin de plus d' un shell wrapper script.

Comme je l'explique dans " Comment puis-je configurer un éditeur pour travailler avec Git sous Windows? ", Je préfère un wrapper, car il est plus facile d'essayer de changer d'éditeur ou de changer le chemin d'un éditeur, sans avoir à enregistrer ladite modification avec un git confignouveau .
Mais c'est juste moi.


Informations supplémentaires : la solution suivante fonctionne avec Cygwin , contrairement à la solution de zuamlifeguard.


Réponse originale.

Le suivant:

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

fonctionne. Ces commandes sont interprétées comme un script shell, d'où l'idée d'envelopper tout ensemble de commandes Windows dans un shscript.
(Comme Franky commente : "N'oubliez pas d'enregistrer votre .shfichier avec des fins de ligne de style Unix ou de recevoir des messages d'erreur mystérieux!")

Plus de détails sur la question SO Comment puis-je configurer un éditeur pour travailler avec Git sous Windows?

Notez l' -multiInstoption ' ', pour garantir une nouvelle instance de notepad ++ pour chaque appel de Git.

Notez également que, si vous utilisez Git sur Cygwin (et que vous souhaitez utiliser Notepad ++ de Cygwin ), alors scphantm explique dans « Utilisation de Notepad ++ pour Git dans Cygwin » que vous devez savoir que:

gitlui passe un cygwinchemin et nppne sait pas quoi en faire

Ainsi, le script dans ce cas serait:

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

Plusieurs lignes pour la lisibilité:

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

D' "$(cygpath -w "$*")"être la partie importante ici.

Val a commenté (puis supprimé) que vous ne devriez pas utiliser l' -notabbaroption:

Cela ne sert à rien de désactiver l'onglet pendant le rebase, mais nuit beaucoup à l'utilisabilité générale du Bloc-notes, car il -notabdevient le paramètre par défaut et vous devez Settings>Preferences>General>TabBar> Hide>uncheckchaque fois que vous démarrez le bloc-notes après le rebase. Ceci est l'enfer. Vous avez recommandé l'enfer.

Utilisez donc plutôt:

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

C'est:

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

Si vous souhaitez placer le script ' npp.sh' dans un chemin avec des espaces (comme dans ' c:\program files\...',), vous avez trois options:

  • Essayez de citer le chemin (guillemets simples ou doubles), comme dans:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • ou essayez la notation de nom abrégé (non infaillible ):

    git config --global core.editor C:/progra~1/git/npp.sh
  • ou (mon endroit préféré) ' npp.sh' dans une partie répertoire de votre %PATH%variable d'environnement. Vous n'auriez alors pas à spécifier de chemin pour le script.

    git config --global core.editor npp.sh
  • Steiny rapporte dans les commentaires qu'il doit faire:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'
VonC
la source
Je l'ai fait fonctionner en plaçant npp.sh à la racine de mon lecteur (c'est-à-dire - C: /npp.sh). Chaque fois que j'essaie de cibler un dossier avec des espaces (c'est-à-dire - D: / Program Files (x86) /Git/npp.sh), il échoue, quelle est la bonne façon d'échapper aux espaces et / ou de faire fonctionner cela?
PHLAK
mettre des guillemets autour d'elle. Voir comment il a des citations autour de la chose entière dans son exemple?
Fred
2
La réponse de zumalifeguard a fonctionné pour moi. Il ne nécessite pas de wrapper de script shell.
wbinford
1
@wbinford: J'ai ajouté un lien vers la réponse de zumalifeguard (que j'ai surévalué), ainsi que la raison pour laquelle je préfère enregistrer un wrapper, plutôt que la commande directe.
VonC
1
J'ai essayé plusieurs combinaisons de ce qui précède et aucune ne fonctionne avec git. j'ai mon script npp sur mon chemin et si depuis ma console cygwin je tape, "npp {fichier}" npp ouvre le fichier très bien, mais quand je fais un "git rebase -i" npp s'ouvre avec un fichier vierge au lieu de la fusionner le fichier. des idées pourquoi cela se produirait?
scphantm
433
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Ou, pour Windows 64 bits et une installation 32 bits de Notepad ++:

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

Ou, les éléments suivants peuvent être émis sur la ligne de commande sur Windows 32 bits ou 64 bits. Il va extraire l'emplacement du notepad ++. Exe du registre et configurer git pour l'utiliser automatiquement:

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"

Si vous souhaitez placer ce qui précède à partir d'un fichier .BAT ou .CMD, vous devez remplacer% A par %% A et% B par %% B

zumalifeguard
la source
9
fonctionne également dans les extensions git. notez que pour les fenêtres 64 bits, l'entrée est"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell
15
La chose idiote est que -notabbar désactivera la barre d'onglets de façon permanente, pas seulement pour cette session. Lorsque vous lancez normalement dans notepad ++, vous devez entrer dans la boîte de dialogue des paramètres et réactiver la barre d'onglets.
Oskar Berggren
4
J'ai dû utiliser: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... je ne sais pas pourquoi.
David Faivre
1
J'ai Windows 7 64 bits, msysgit v1.9.2 et Notepad ++ v6.6.9 et cela a fonctionné PARFAITEMENT . Merci.
Radu Murzea
2
@CoDEmanX Sans -multiInstcela signalera probablement le Notepad ++ déjà en cours d'exécution pour ouvrir le fichier, puis quitter immédiatement. Cela peut être un gros problème si celui qui appelle l'éditeur s'attend à ce qu'il ne revienne qu'une fois l'édition terminée (c'est-à-dire une opération synchrone, comme c'est le cas lors de l'appel à vi). Essayez un rebase interactif ( git rebase -i), par exemple. Si cela fonctionne toujours comme prévu, alors tout va bien.
blubberdiblub
7

Ça marche pour moi

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe
Tim Scott
la source
j'ai fait de même .. maintenant comment ouvrir le bloc-notes ++ pour valider avec le message ?? quelle est la virgule ?? s'il vous plaît pouvez-vous donner un exemple
shridutt kothari
4
L'ajout de l' -multiInstoption est crucial ici, comme dans les autres réponses.
blubberdiblub
1
Ce n'est pas bon pour deux raisons. Premièrement, si le volume C: est NTFS avec l'option de nom de fichier 8.3 désactivée, il n'y en a pas C:\Progra~1du tout. Deuxièmement, il peut y avoir plusieurs C:\Progra*répertoires, donc le ~1suffixe n'est pas nécessairement celui valide.
kkm
5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""
Jus
la source
Cela a fait l'affaire pour moi! Ensuite, le .gitconfig ressemble à: [core] editor = \ "c: \\ Program Files (x86) \\ Notepad ++ \\ notepad ++. Exe \" -multiInst -nosession -noPlugin
AtliB
Voir la réponse la plus votée, qui comprend ceci (je n'ai pas lu assez loin)
AtliB
3

J'utilise l'approche avec la variable PATH. Le chemin vers Notepad ++ est ajouté à la variable PATH du système, puis core.editor est défini comme suit:

git config --global core.editor notepad++

En outre, vous pouvez ajouter des paramètres supplémentaires pour Notepad ++:

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

(comme je l'ai détaillé dans " Git core.editorpour Windows ")

Et ici, vous pouvez trouver certaines options que vous pouvez utiliser pour indiquer les options de ligne de commande Notepad ++ .

starikovs
la source
1

MISE À JOUR 2015

Si vous décompressez / installez Notepad ++ dans c:\utils\npp\et renommez notepad ++. Exe en npp.exe pour plus de simplicité, alors tout ce que vous avez à faire est de

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

Aucun script wrapper ou autre astuce. Pas besoin d'avoir Notepad ++ dans PATH.

Dan Dascalescu
la source
Mise à jour 2020: il semble que vous ayez manqué les options pour ouvrir une nouvelle instance de bloc-notes. J'ai utilisé à partir de cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"et cela fonctionne à la fois cmd terminaletgit bash
oleksa
1

J'utilise Windows 10 et notepad ++, et j'obtenais ce message d'erreur:

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

Je fais donc la configuration de cette façon:

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

et il fonctionne

Juan Luis Vivas Occhipinti
la source
0

Suivez ces instructions,

  1. Assurez-vous d'abord que le bloc - notes ++ est installé sur votre système et qu'il s'agit du programme par défaut pour ouvrir les fichiers .txt.

  2. Installez ensuite gitpad sur votre système. Notez que la dernière fois que j'ai vérifié que le lien de téléchargement était rompu, téléchargez-le à partir d' ici comme expliqué .

Ensuite, pendant la validation, vous devriez voir apparaître votre éditeur de texte préféré.

Aditya P
la source
0

J'ai utilisé la solution de starikovs. J'ai commencé avec une fenêtre bash et donné les commandes

cd ~
touch .bashrc

Ensuite, j'ai trouvé le fichier .bashrc dans l'explorateur Windows, l'ai ouvert avec notepad ++ et ajouté

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

afin que bash sache où trouver Notepad ++. (Avoir Notepad ++ dans le bash PATH est une chose utile en soi!) Ensuite, j'ai collé sa ligne

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

dans une fenêtre bash. J'ai commencé une nouvelle fenêtre bash pour un dépôt git pour tester des choses avec la commande

git rebase -i HEAD~10

et le fichier ouvert dans Notepad ++ comme espéré.

Ivan
la source
0

Voici une solution avec Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Si aucun chemin, ne passez aucun chemin

  2. Si le chemin est vide, passez le chemin vide

  3. Si le chemin n'est pas vide, convertissez-le au format Windows.

Ensuite, j'ai défini ces variables:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR permet au script de fonctionner avec Git

  2. GIT_EDITOR permet au script de fonctionner avec les commandes Hub

La source

Steven Penny
la source