Change the default editor for files opened in the terminal? (e.g. set it to TextEdit/Coda/Textmate)
Asked Answered
P

8

145

Is there a way to make files opened for editing in the terminal open in Textedit instead?

For example, where a command might open a file for editing (like git commit), instead of opening that file in vim or emacs, it would open in Textedit (or perhaps another text editing application of your choosing, such as Coda or Sublime).

And as a bonus question, is there any way to specifically configure git to automatically open the file created after running git commit in an editor from the applications directory?

Pankhurst answered 22/8, 2010 at 0:30 Comment(3)
Yes, I am using OSX (10.6.4).Pankhurst
Best solution I found is using duti -> apple.stackexchange.com/a/123954/58507Evilminded
for mac os 10.10+ above solutions won't work. Try this apple.stackexchange.com/questions/123833/…Rampage
I
176

Most programs will check the $EDITOR environment variable, so you can set that to the path of TextEdit in your bashrc. Git will use this as well.

How to do this:

  • Add the following to your ~/.bashrc file:
    export EDITOR="/Applications/TextEdit.app/Contents/MacOS/TextEdit"
  • or just type the following command into your Terminal:
    echo "export EDITOR=\"/Applications/TextEdit.app/Contents/MacOS/TextEdit\"" >> ~/.bashrc

If you are using zsh, use ~/.zshrc instead of ~/.bashrc.

Intend answered 22/8, 2010 at 0:44 Comment(7)
Perfect, this does it. I also ran this command to make sure git works the way I would expect it to. This git config --global --unset-all core.editor then git config --global --add core.editor "open -W -n".Pankhurst
Are you using a different shell?Intend
in my case, I am using zsh so obviously I need to update the .zshrc config file.Tenpin
use quotes if the path to your editor has spaces, e.g. "echo "export EDITOR=\"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl\"" >> ~/.bashrc" And you may have to reload your .bashrc with: source ~/.bashrcCrotchety
Thanks, I've set nano editor as default by this. Here's how to add it to OSX: http://hints.macworld.com/article.php?story=20021017065800302Powered
Mars Redwyne, I tried the quotation marks for spaces (export EDITOR=/Applications/Sublime\"Text.app/Contents/MacOS/Sublime\"Text), as well as just a slash with the space (export EDITOR=/Applications/Sublime\ Text.app/Contents/MacOS/Sublime\ Text), but neither worked, even after running the source command. Am I doing something wrong?Wizardly
@Michelle Glauser your quotes should go like EDITOR="/Applications/.../Sublime Text" or whatever. Across the entire EDITOR export, not just something inside it. (A whole month late on this response... oops)Intend
P
50

For anyone coming here in 2018 using iTerm:

  • go to iTerm -> Preferences -> Profiles -> Advanced -> Semantic History
  • from the dropdown, choose Open with Editor and from the right dropdown choose your editor of choice

For anyone coming here in 2022 and using iTerm2:

iTerm2 moved some things around so now it's found under

  • iTerm -> Settings -> Preferences -> Profiles -> Advanced -> Semantic History
Panhellenic answered 12/10, 2018 at 12:24 Comment(0)
H
33

Use git config --global core.editor mate -w or git config --global core.editor open as @dmckee suggests in the comments.

Reference: http://git-scm.com/docs/git-config

Hackle answered 22/8, 2010 at 0:47 Comment(6)
...and setting it to use open means that you automatically get the finder default. So changes in the finder are propagated naturally.Gaekwar
open uses Launch Services to determine the file type, mostly based on its extension. If the file has an unknown extension, it'll fail to open the file. Generally, your CLI editor should be something that assumes text files...Snowclad
Some (very) explicit instructions would be very helpful...the reference is extremely terse.Pankhurst
@Diogenes: See my answer on a different post if you still need more explicit help: #6435746Mafia
Better be git config --global core.editor "open -W" (otherwise you'll get a Aborting commit due to empty commit message. error).Packsaddle
I agree with @Gordon Davisson. Setting your editor to something that is not a text editor is incorrect.Intend
E
22

For OS X and Sublime Text

Make subl available.

Put this in ~/.bash_profile

[[ -s ~/.bashrc ]] && source ~/.bashrc

Put this in ~/.bashrc

export EDITOR=subl
Endogen answered 9/10, 2014 at 0:23 Comment(1)
I found that this does not work correctly with chsh. The file opens, but any changes are lost. I had to use chsh -s /bin/zsh to switch shells manually.Alphonsoalphonsus
M
6

Set your editor to point to this program:

/Applications/TextEdit.app/Contents/MacOS/TextEdit

With SVN, you should set SVN_EDITOR environment variable to:

$ export SVN_EDITOR=/Applications/TextEdit.app/Contents/MacOS/TextEdit

And then, when you try committing something, TextEdit will launch.

Mammillary answered 22/8, 2010 at 0:41 Comment(3)
I'd prefer to use /usr/bin/open, because that will use the finder default whatever you set it to.Gaekwar
How would you do the same for git?Pankhurst
The first like is just setting EDITOR= to that, but what do I type for the second line?Heterologous
C
1

For Sublime Text 3:

defaults write com.apple.LaunchServices LSHandlers -array-add '{LSHandlerContentType=public.plain-text;LSHandlerRoleAll=com.sublimetext.3;}'

See Set TextMate as the default text editor on Mac OS X for details.

Col answered 3/3, 2014 at 7:46 Comment(0)
E
0

If you want the editor to work with git operations, setting the $EDITOR environment variable may not be enough, at least not in the case of Sublime - e.g. if you want to rebase, it will just say that the rebase was successful, but you won't have a chance to edit the file in any way, git will just close it straight away:

git rebase -i HEAD~
Successfully rebased and updated refs/heads/master.

If you want Sublime to work correctly with git, you should configure it using:

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

I came here looking for this and found the solution in this gist on github.

Evocation answered 21/3, 2020 at 14:43 Comment(0)
M
0

make Sublime Text 3 your default text editor: (Restart required)

defaults write com.apple.LaunchServices LSHandlers -array-add "{LSHandlerContentType=public.plain-text;LSHandlerRoleAll=com.sublimetext.3;}"

make sublime then your default git text editor git config --global core.editor "subl -W"

Maladminister answered 12/8, 2020 at 20:32 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.