如何更改在终端中打开文件的默认编辑器?(例如将其设置为TextEdit/Coda/Textmate)

142

有没有办法让在终端打开编辑文件的时候,文件会在 Textedit 中打开呢?

例如,某个命令可能会打开一个要编辑的文件(如 git commit),而不是在 vim 或 emacs 中打开它,它会在 Textedit 中打开(或者您选择的其他文本编辑应用程序,例如 Coda 或 Sublime)。

还有一个额外的问题,是否有任何方法可以特别配置 git,以便在从应用程序目录运行 git commit 后自动使用编辑器打开创建的文件?


1
是的,我正在使用OSX(10.6.4)。 - Diogenes
1
我找到的最佳解决方案是使用 duti -> http://apple.stackexchange.com/a/123954/58507 - Gomino
对于 Mac OS 10.10 及以上版本,之前的解决方案将不再适用。请尝试访问以下链接: http://apple.stackexchange.com/questions/123833/replace-text-edit-as-the-default-text-editor/220496#220496 - Rishikesh Shukla
8个回答

173

大多数程序都会检查 $EDITOR 环境变量,因此您可以在 bashrc 中将其设置为 TextEdit 的路径。Git 也会使用它。

如何操作:

  • 将以下内容添加到您的~/.bashrc 文件中:
    export EDITOR="/Applications/TextEdit.app/Contents/MacOS/TextEdit"
  • 或者只需在终端中输入以下命令:
    echo "export EDITOR=\"/Applications/TextEdit.app/Contents/MacOS/TextEdit\"" >> ~/.bashrc

如果您正在使用 zsh,则使用 ~/.zshrc 而不是 ~/.bashrc


22
完美,做到了。我还运行了这个命令,以确保git的工作方式符合我的预期。这个git config --global --unset-all core.editor然后git config --global --add core.editor "open -W -n" - Diogenes
你在使用不同的shell吗? - alternative
6
就我而言,我正在使用zsh,所以显然需要更新.zshrc配置文件。 - Malloc
3
如果你的编辑器路径中包含空格,请使用引号,例如: "echo "export EDITOR=\"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl\"" >> ~/.bashrc"并且你可能需要重新加载 .bashrc 文件:source ~/.bashrc - Mars Redwyne
谢谢,我已经将nano编辑器设置为默认编辑器了。以下是如何在OSX上添加它的方法:http://hints.macworld.com/article.php?story=20021017065800302 - Micer
显示剩余2条评论

48

对于任何在2018年使用iTerm的人:

  • 进入iTerm -> 首选项 -> 个人资料 -> 高级 -> 语义历史记录
  • 从下拉列表中选择“打开编辑器”,然后从右侧下拉列表中选择您选择的编辑器

对于任何在2022年使用iTerm2的人:

iTerm2将某些内容移动到以下位置:

  • iTerm -> 设置 -> 首选项 -> 个人资料 -> 高级 -> 语义历史记录

32

根据评论中@dmckee的建议,可以使用以下命令之一:git config --global core.editor mate -wgit config --global core.editor open

参考资料:http://git-scm.com/docs/git-config


4
将其设置为使用“open”意味着您自动获得查找器默认设置。因此,查找器中的更改会自然传播。 - dmckee --- ex-moderator kitten
4
open 使用 Launch Services 来确定文件类型,主要基于文件扩展名。如果文件拓展名未知,则无法打开该文件。通常情况下,CLI 编辑器应该是假定文本文件的工具... - Gordon Davisson
一些(非常)明确的指示将非常有帮助...参考资料极为简洁。 - Diogenes
2
@Diogenes:如果你还需要更明确的帮助,请查看我在另一篇帖子上的回答:https://dev59.com/3mw15IYBdhLWcg3wu-E9#6435291 - X-Istence
4
最好使用 git config --global core.editor "open -W"(否则会出现“因为空提交消息而终止提交”错误)。 - rsenna
我同意 @Gordon Davisson 的观点。将编辑器设置为非文本编辑器是不正确的。 - alternative

21

针对OS X和Sublime Text

使subl可用。

将以下内容放入~/.bash_profile

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

将此放入~/.bashrc
export EDITOR=subl

我发现这个并不能与 chsh 正常工作。文件可以打开,但是任何更改都会丢失。我必须手动使用 chsh -s /bin/zsh 来切换 shell。 - Cryptc

6

请将您的编辑器设置为指向此程序:

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

使用SVN时,您需要将SVN_EDITOR环境变量设置为:

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

然后,当你尝试提交某些东西时,TextEdit会启动。


1
我更喜欢使用/usr/bin/open,因为它会使用Finder默认设置无论你将其设置为什么。 - dmckee --- ex-moderator kitten
你如何为git做同样的事情? - Diogenes
第一行只是将EDITOR设置为那个值,但我应该在第二行输入什么? - User

1

0

如果你想让编辑器与git操作一起工作,仅仅设置$EDITOR环境变量可能是不够的,至少在Sublime的情况下是这样 - 例如,如果你想要进行rebase操作,它只会显示rebase成功,但你没有机会以任何方式编辑文件,git会立即关闭它:

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

如果您想让Sublime与git正确配合工作,您应该使用以下配置:
git config --global core.editor "sublime -n -w"

我来到这里寻找并在GitHub上的此代码片段中找到了解决方案。


0

将Sublime Text 3设置为默认文本编辑器:(需要重新启动)

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

将Sublime设置为您的默认Git文本编辑器 git config --global core.editor "subl -W"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接