如何使Sublime Text成为Git的默认编辑器?


216

我有一个问题设定崇高文本2为core.editorgit

我已经阅读了所有可以解决该问题的文章,但仍然无济于事。我正在运行Windows。

我已经做好了:

git config --global core.editor "'C:/Program Files/Sublime Text 2/sublime_text.exe'"

并尝试了诸如-m。当我打开my时.gitconfig,这是其中的内容:

[user]
    name = Spencer Moran
    email = smoran02@gmail.com
[core]
    editor = 'C:/Program Files/Sublime Text 2/sublime_text.exe'

如果我转到Git并输入:

README.markdown --edit

README文件将在记事本中打开,而不是Sublime Text。

有谁知道我在做什么错或如何解决这个问题?


11
如果 README.markdown --edit在cmd.exe中键入,git则完全不参与。如果您希望它在Windows中更改文件关联。
2012年

1
以下大多数答案的常规FYI:-w表示“等待文件返回之前关闭”,-n表示“打开新窗口”。资料来源:docs.sublimetext.info/en/latest/command_line/command_line.html
MarredCheese

:我最喜欢使用的文本崇高的3混帐我的编辑器设置stackoverflow.com/questions/2596805/...
加布里埃尔斯台普斯

Answers:


343

视窗

Sublime Text 2(内部版本2181)

最新的Build 2181刚刚添加了对-w(wait)命令行参数的支持。以下配置将使ST2可以在Windows上用作默认的git编辑器。这将允许git打开ST2提交消息等。

git config --global core.editor "'c:/program files/sublime text 2/sublime_text.exe' -w"

Sublime Text 3(Build 3065)

Sublime Text 3(内部版本3065)添加了subl.exe命令行帮助器。使用subl.exe -h用于提供给您的选项。我hot_exit: trueremember_open_files: true我的崇高文字使用者设定。我发现以下git config对我来说很好用。

git config --global core.editor "'c:/program files/sublime text 3/subl.exe' -w"

Mac和Linux

通过在终端中键入以下命令,将Sublime设置为Git的编辑器:

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


使用此Git配置,将在我的编辑器中打开新选项卡。我编辑提交消息,保存选项卡(Ctrl+ S)并关闭它(Ctrl+ W)。

Git将等到标签关闭后才能继续工作。


14
就个人而言,除了将编辑器设置为@jrotello所建议的设置之外,当我在ST2设置中添加以下选项时,我的ST2 / git体验也得到了很大改善:{“ hot_exit”:false,“ remember_open_files”:false,“ close_windows_when_empty”:true }
桑迪2012年

6
@Phrogz:我能够使用以下语法在.gitconfig中运行它:editor = 'C:\\Program Files\\Sublime Text 2\\sublime_text.exe' -w
awayken 2013年

4
对我来说,如果崇高文字已经打开,它将打开一个新标签。关闭标签页,不会让git知道它已经完成。我已经尝试了--multiinstance,但是似乎什么也没做。
David Faivre 2013年

5
请注意,当hot_exit错误和灯熄灭时,所有未保存的工作都会消失!!!!!!
尔根·保罗

4
实际上,使用“ -n -w”,git似乎无法判断升华文本窗口已关闭(如果我至少有一个现存的升华窗口已打开)。“ -w --multiinstance”似乎仍然是最好的,尽管在新的sublime窗口中,所有现有的选项卡都会重新打开。看来可以放心地忽略它们。
David Faivre 2014年

94

您可以在Mac和Linux上使用以下命令:

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

26
实际上,最近在Mac上的建议是将subl符号链接到$ PATH中的某个位置,并将编辑器设置为'subl -w'。在官方文档中。
桑迪


8
文档说使用subl -w,但是如果您打开其他标签页,则无法正常使用。我发现subl -n -w它打开了一个新窗口,效果更好。
iano

1
@iano如果我这样做,应该关闭标签页还是关闭窗口以提交?关闭窗口没有工作
Karthik T

在我遵循以下指示之前,这将为我打开一个空文档,直到我遵循以下说明:sublimetext.com/docs/3/osx_command_line.html,但将路径从Sublime Text.app更改为Sublime Text 2.app
Evanss

14

对于Mac OS X,在[core]下的〜/ .gitconfig文件中,我不得不放置此代码来最终解决此问题。

editor = /Applications/Sublime\\ Text.app/Contents/SharedSupport/bin/subl  -n -w

这是在subl正常工作但git无法访问它的时候。并显示这些错误

subl -n -w: subl: command not found
error: There was a problem with the editor 'subl -n -w'.

11

对于MacSublime Text 3

如果git config --global core.editor "subl -n -w"不起作用,请使用以下git config命令:

$ git config --global core.editor "'/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl' -n -w"

注意:它包含逃避反斜杠。


7

在cygwin / zsh中对我有用的是什么:

在/ usr / local / bin中创建subl_git文件

#!/bin/bash
/cygdrive/c/Program\ Files/Sublime\ Text\ 2/sublime_text.exe -w -n `cygpath -w $@`

在gitconfig中:

editor = /usr/local/bin/subl_git

请问我的新手问题,但是如何访问gitconfig?这和跑步有git config --list什么不同吗?提前致谢。
瑞安·蔡斯

只是将它们列出来。您已编辑了gitconfig
meeech

我的用户文件夹中有一个空格,所以我使用了修改后的"/cygdrive/c/Program Files/Sublime Text 3/subl.exe" -w -n "`cygpath -d -w "$@"`
Mark

6

使用Sublime Text 2和以下配置,如果关闭git commit的注释文件没有任何反应:

git config --global core.editor "'c:/program files/sublime text 2/sublime_text.exe' -w"

如果在Sublime中关闭COMMIT_EDITMSG注释文件时git commit尚未完成,我发现这可能是因为您正在以管理员模式运行CMD(并且已经在非管理员模式中打开了Sublime Text)。我遇到了同样的问题,当我以正常模式启动CMD时,它对我有用。

附言:只是想回答这个问题,@ david在接受的答案的评论中指出,但是由于我是新来的,所以我无法发表评论...所以我做了一个新的答案,因为我认为这可以对某些遇到问题的人很有用。


谢谢你的提示。您知道解决方案吗?
Scott Wegner,2015年

@ScottWegner只需在非管理员模式下启动CMD,即可解决。您无需处于管理员模式即可运行git命令。但是,如果您确实需要处于管理模式,那么除了打开另一个CMD实例外,我没有找到解决方案。
弗朗索瓦·

感谢您的跟进。由于开发环境需要其他工具(Visual Studio)的管理模式,所以我最终使用了升高的外壳,因此我将整个升高的外壳运行。我想我只会探索需要它的工具。
Scott Wegner

1
@ScottWegner我个人使用Cmder(完整版本甚至包括msysgit)。它在带有标签的唯一窗口中允许多个CMD,bash或其他Shell实例。您可以在管理模式下启动某些选项卡,而在普通模式下启动其他选项卡。我通常有一个专门用于git的标签,而其他工具则是其他标签。也许您有兴趣尝试一下。这是一个很棒的工具!
弗朗索瓦·

回复:管理员模式-我认为诀窍在于,您的shell和sublime必须使用相同的特权。即,如果您在升高终端的情况下运行,并且也将升华器也升高了,则它可以正常运行。
约瑟夫·埃文森

5

我刚刚借助PowerShell(Windows的命令行工具,也被用作GithubforWindows的默认命令行)成功完成了此任务

只需在“ C:\ Users \%username%\ My Documents”上创建一个文件夹“ WindowsPowerShell”。然后,创建一个名为“ profile.ps1”的文件。确保您具有正确的文件扩展名.ps1而不是.txt。在profile.ps1内,将以下行设置为别名命令:

Set-Alias subl 'c:\program files\sublime text 2\sublime_text.exe'

确保计算机上的sublime目录正确。您还可以在此处查看配置详细信息。

现在,我可以通过以下命令通过PowerShell命令使用Sublime Text 2编辑文件:

subl filename

希望这是有用的...


4
要在Sublime Text 2中打开当前文件夹,您可以使用: subl .
awayken

对于Sublime Text 3,请使用新的subl.exe:Set-Alias subl 'c:\program files\sublime text 3\subl.exe'
wtjones 2014年

3

今天晚上我在Windows中使用git编辑器遇到了同样的问题,最后我明白了。

您需要使用bash语法并使用DOS 8.3格式设置编辑器路径以避免空格

这对我不起作用:

git config --global core.editor "C://Program files/Sublime Text/sublime_text.exe"

这样做:

git config --global core.editor /C/PROGRA~1/SUBLIME~1/sublime_text.exe

您可以使用dir / x获取目录的DOS 8.3名称


1

由于某种原因,我只是在为此而苦苦挣扎,上面的示例都不适合我。这是我的解决方案:

 git config --global core.editor "'c:/<path to sublime>/sublime_text.exe' -w $*"

您特别需要' '路径周围和$*args末尾的所有内容" "


1

如果您是Mac用户,则方法如下:

git config --global core.editor '/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl'

1

好吧,即使将它设置为我的core.editor后,我也很难从gitbash调用notepad ++。

通过将以下行添加到我的gitbash安装目录中的.bashrc文件中,我解决了所有问题。

alias npp='winpty "C:/Program Files (x86)/Notepad++/notepad++.exe"'

因此,我可以使用别名“ npp”来调用notepad ++。如果将目录更改为要使用的相应编辑器,我觉得这可以为您提供帮助。


1

对于MAC用户,我可以说Sublime使用以下命令:

首先使用以下命令检查.gitconfig文件:

  1. cd ~
  2. ls -la
  3. cat .gitconfig

现在可以添加此配置:

git config --global core.editor "subl -n -wl1"

哪里l1告诉从第1行开始。


0

对于Windows 7,我发现以下解决方案有效:

git config --global core.editor "C:/Program\ Files/Sublime\ Text\ 2/sublime_text.exe -n -w"

0

在Windows上,如果要安装git,则可以选择其他编辑器并提供以下命令行。C:\ Program Files \ Sublime Text 3 \ sublime_text.exe -w 安装程序映像


0

我没有看到任何有关Windows的更新实例,允许Git安装主动选择Sublime Text作为您的默认文本编辑器,而没有原始替代代码的所有麻烦和困扰... Sublime Text在(重新)安装Git中显示为选项


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.