How do I use Notepad++ (or other) with msysgit?
Solution 1
Update 2010-2011:
zumalifeguard's solution (upvoted) is simpler than the original one, as it no longer needs a shell wrapper script.
As I explain in "How can I set up an editor to work with Git on Windows?", I prefer a wrapper, as it is easier to try and switch editors, or change the path of one editor, without having to register said change with a git config
again.
But that is just me.
Additional information: the following solution works with Cygwin, while the zuamlifeguard's solution does not.
Original answer.
The following:
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 "$*"
does work. Those commands are interpreted as shell script, hence the idea to wrap any windows set of commands in a sh
script.
(As Franky comments: "Remember to save your .sh
file with Unix style line endings or receive mysterious error messages!")
More details on the SO question How can I set up an editor to work with Git on Windows?
Note the '-multiInst
' option, for ensuring a new instance of notepad++ for each call from Git.
Note also that, if you are using Git on Cygwin (and want to use Notepad++ from Cygwin), then scphantm explains in "using Notepad++ for Git inside Cygwin" that you must be aware that:
git
is passing it acygwin
path andnpp
doesn't know what to do with it
So the script in that case would be:
#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$(cygpath -w "$*")"
Multiple lines for readability:
#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
-nosession -noPlugin "$(cygpath -w "$*")"
With "$(cygpath -w "$*")"
being the important part here.
Val commented (and then deleted) that you should not use -notabbar
option:
It makes no good to disable the tab during rebase, but makes a lot of harm to general Notepad usability since
-notab
becomes the default setting and you mustSettings>Preferences>General>TabBar> Hide>uncheck
every time you start notepad after rebase. This is hell. You recommended the hell.
So use rather:
#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession -noPlugin "$(cygpath -w "$*")"
That is:
#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession \
-noPlugin "$(cygpath -w "$*")"
If you want to place the script 'npp.sh
' in a path with spaces (as in
'c:\program files\...
',), you have three options:
-
Either try to quote the path (single or double quotes), as in:
git config --global core.editor 'C:/program files/git/npp.sh'
-
or try the shortname notation (not fool-proofed):
git config --global core.editor C:/progra~1/git/npp.sh
-
or (my favorite) place '
npp.sh
' in a directory part of your%PATH%
environment variable. You would not have then to specify any path for the script.git config --global core.editor npp.sh
-
Steiny reports in the comments having to do:
git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'
Solution 2
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Or, for 64-bit Windows and a 32-bit install of Notepad++:
git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Or, the following can be issued on the command line on either 32-bit or 64-bit Windows. It will pull the location of notepad++.exe from the registry and configure git to use it automatically:
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"
If you wish to place the above from a .BAT or .CMD file, you must replace %A with %%A and %B with %%B
Solution 3
This works for me
git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe
Solution 4
As of Git for Windows v2.15.0 (October 30th 2017) it is now possible to configure nano
or Notepad++ as Git's default editor instead of vim
.
During the installation you'll see the following screen:
Solution 5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""
Related videos on Youtube
warnabas
Passionate PHP developer Penguin Linux junkie Desktop computer Avid PC gamer Coffee aficionado Woman and man holding hands Dedicated husband Family (man, girl, boy) Proud father of two
Updated on March 17, 2022Comments
-
warnabas about 2 years
How do I use Notepad++ (or any other editor besides vim) with msysgit?
I tried all of the following to no avail:
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
-
csl over 14 yearsAny error messages? Have you tried setting the EDITOR environment variable?
-
JasonTrue over 14 yearsTry looking here: stackoverflow.com/questions/10564/…
-
Jim Fell about 7 yearsPossible duplicate of How can I set up an editor to work with Git on Windows?
-
-
warnabas over 14 yearsI got this to work by placing npp.sh in the root of my drive (ie - C:/npp.sh). Any time I try to target a folder with spaces (ie - D:/Program Files (x86)/Git/npp.sh) in it it fails, what's the proper way to escape spaces and/or get this to work?
-
Fred over 14 yearsput quotes around it. See how he has quotes around the entire thing in his example?
-
scphantm about 12 yearsI have tried multiple combinations of the above and none work with git. i have my npp script in my path and if from my cygwin console i type, "npp {file}" npp opens the file just fine, but when i do a "git rebase -i" npp opens with a blank file instead of the merge file. any ideas why this would happen?
-
VonC about 12 years@scphantm strange. I would advise for posting a new question, with a link to this answer, and many more details (Git version, OS version, npp version, content of the script, ...)
-
Matt almost 12 yearsworks in git extensions too. note that for 64bit windows the entry is
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
-
Oskar Berggren over 11 yearsThe silly thing is that -notabbar will disable the tab bar permanently, not just for that session. When launchin notepad++ normally, you have to go into the settings dialog an enable the tab bar again.
-
David Faivre about 11 yearsI had to use:
git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin"
...not sure why. -
Chirayu Shishodiya over 9 yearsgit rebase was not rebasing my commits. I was amending them using notepad++.exe. I changed the editor settings of git config as mentioned in this answer and magically git rebase started rebasing. I suspect it is to do with the parameters being passed in to notepad++.exe.
-
Radu Murzea over 9 yearsI have Windows 7 64-bit, msysgit v1.9.2 and Notepad++ v6.6.9 and this worked PERFECTLY. Thanks.
-
Shridutt Kothari almost 9 yearsi did the same.. now how to open notepad++ to commit with message?? what is the commad?? please can you give an example
-
Adam McKee over 8 yearsYou can use backslashes if you escape them, i.e.
"C:\\Program..."
-
CodeManX over 8 yearsAny reason why it shall launch a new Notepad++ process, without session, plugins and tab bar? Doesn't it work if it's already running?
-
blubberdiblub over 8 years@CoDEmanX Without
-multiInst
it will likely just signal the already running Notepad++ to open the file and then exit immediately. This can be a big problem if whatever calls the editor expects it to return only when done editing (i. e. a synchronous operation, as is the case when calling vi). Try an interactive rebase (git rebase -i
), for instance. If this still works as expected, then you're fine. -
blubberdiblub over 8 yearsAdding the
-multiInst
option is crucial here, like in the other answers. -
Bhushan Gadekar about 8 yearsbut how to launch notepad++ within git repo?
-
kkm over 7 yearsThis is not good for two reasons. First, if the C: volume is NTFS with the 8.3 filename option turned off, there is no
C:\Progra~1
at all. Second, there may be multipleC:\Progra*
directories, so the~1
suffix is not necessarily the valid one. -
Ofer over 7 yearsThanks! Worked for me, but with a slight edit: git config --global core.editor "'C:\Program Files (x86)\Notepad++\notepad++.exe' -multiInst -notabbar -nosession -noPlugin".
-
zumalifeguard over 7 yearsOfer, I see that the only change you made is changing the forward slashes to backslashes. Did you do it because the forward slashes didn't work?
-
Hilikus almost 7 yearsFor even cooler integration, add "-ldiff". this will add syntax highlighting
-
AtliB almost 7 yearsThat did the trick for me! Afterwards the .gitconfig looks like: [core] editor = \"c:\\Program Files (x86)\\Notepad++\\notepad++.exe\" -multiInst -nosession -noPlugin
-
AtliB almost 7 yearsSee highest voted answer, which includes this (I didn't read far enough)
-
oleksa about 4 yearsUpdate 2020: seems that you've missed the options to open new notepad instance. I've used from cmd.exe
git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"
and it is working from bothcmd terminal
andgit bash