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?
duti
-> apple.stackexchange.com/a/123954/58507
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
.
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
open
means that you automatically get the finder default. So changes in the finder are propagated naturally.
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...
git config --global core.editor "open -W"
(otherwise you'll get a Aborting commit due to empty commit message.
error).
For anyone coming here in 2018:
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 OS X and Sublime Text
Make subl
available.
Put this in ~/.bash_profile
[[ -s ~/.bashrc ]] && source ~/.bashrc
Put this in ~/.bashrc
export EDITOR=subl
chsh
. The file opens, but any changes are lost. I had to use chsh -s /bin/zsh
to switch shells manually.
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.
/usr/bin/open
, because that will use the finder default whatever you set it to.
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.
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.
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"
Success story sharing
git config --global --unset-all core.editor
thengit config --global --add core.editor "open -W -n"
.zsh
so obviously I need to update the.zshrc
config file."echo "export EDITOR=\"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl\"" >> ~/.bashrc"
And you may have to reload your .bashrc with:source ~/.bashrc