无法执行编辑器


153

我不必经常修改多个提交消息,但是它已经发生过一两次,而且我永远都不会记得看到过。我希望别人有。当I时git rebase -i HEAD~7,期望列表将完全按预期在vi中打开。我将pick值更改为edit适当的值,然后:wq

无法执行编辑器

core.editor我全局中的设置.gitconfigvi(我也将其更改为vim一个绝望的举动)。我尝试使用mate,但什至无法正确打开初始列表,因此我将其改回了原来的列表。

我正在使用v1.7.3,欢迎任何建议。


1
来源包括git_editor "$TODO" || die_abort "Could not execute editor"。既然您说编辑器确实启动了,那意味着它正在返回一个非零的退出代码。您可以在命令行上正常使用该行为来复制该行为吗?
卡斯卡贝尔

对我来说很奇怪的是,vi会启动以显示提交列表,但是当我保存并关闭所有内容时,它们就会死掉。请参阅我的答案,了解我为使其神奇地开始工作所做的更改。
罗伯·威尔克森

您正在运行什么操作系统?运行OSX Lion我遇到了同样的麻烦,您的回答已解决。+1
亚当·刘易斯

@AdamLewis-我现在不能确定,但​​是给定日期可能是10.6或.7。OSX,当然。
Rob Wilkerson

5
我想当我使用自制软件安装新的vim时就创建了这个问题。设置git config --global core.editor "/usr/local/bin/vim"为我修复。
mmell,2014年

Answers:


185

昨天只是其中之一。不好意思,我决定将完整路径设置为vi(例如/usr/bin/vi),而不仅仅是可执行文件。现在一切正常。我必须承认,我没有得到它,因为vi它完全可以独立执行(我的$EDITORenv变量也设置为vi),但是它可以正常工作,而且我的技术业力最近还不太好,所以也许我不应该质疑神将...


6
您在哪里将完整路径设置为/ usr / bin / vi?
Amala

131
我把它放在我的全局配置文件:git config --global core.editor "/usr/bin/vim"
罗伯·威尔克森

我遇到过同样的问题。由于我无法理解的原因,我将core.editor设置设置为/ user / bin / vim而不是/ usr / bin / vim
jonnybot 2014年

遇到了同样的问题,但是使用Sublime Text-完整路径终于解决了问题。太奇怪了,因为无论如何我都确定一切正常……:-\
2014年

git config --global color.editor "/usr/local/bin/vim"确实为我工作了:),谢谢
przbadu 16-3-9

159

以下命令

git config --global core.editor /usr/bin/vim

解决它。

[编辑]

现在,我看到有人已经在评论中发布了它。希望它对像我这样的盲人有帮助。


6
例如,对于Windows(缺少单引号,这是我的问题):git config --global core.editor“'C:\ Program Files(x86)\ Vim \ vim74 \ vim.exe'”
chrjs 2015年

1
是的,这个^。为了澄清这一点,请在可执行文件的路径周围使用双引号将单引号引起来。
雅各布

奇迹般有效!
R11G

7

与到目前为止的其他答案不同,对我来说,使用vi的绝对路径并设置git core.editorconfig不足以解决问题。(这些已经就位。)

在我的情况下,通过-f标志添加到vi命令解决了该问题:

git config --global core.editor '/usr/bin/vi -f'

一旦使用了该-f选项,就可以使用git rebase -i,并且在保存并退出提交列表时,将按应有的方式进行变基处理,而不是出现“无法执行编辑器”错误。

VIM手册页说,对于选项-f

对于GUI版本,Vim不会从启动它的外壳中分叉和分离。...当Vim由等待编辑会话完成的程序(例如邮件)执行时,应使用此选项。

好吧,我所使用的不是GUI版本。我git在masOS Sierra 10.12.6的终端窗口中的bash命令行上运行。但是由于git rebase -i等待编辑会话完成,所以我想这就是在-f这里需要该选项的原因。也许vim(不带-f)出于某种原因试图从shell派生/分离,我还无法弄清楚。


6

我遇到了这个问题,这是由vim的vcscommand插件的某些部分引起的。使用以下任何命令启动vim都会导致退出代码1(“错误”):

  • vi
  • vim

但是这些给了我退出代码0(“成功”):

  • /usr/bin/vi
  • /usr/bin/vim
  • vi -u NONE
  • vim -u NONE

我可以通过禁用它们来追溯到特定的插件,~/.vimrc~/.vim通过重命名它们并运行vi -c q ; echo $?快速运行vim并打印退出代码来查找文件。


1
我遇到了同样的问题,并设置了vim的完整路径:git config --global core.editor / usr / bin / vim
James

另一个可能的罪魁祸首似乎是Mac OS X上的病原体插件
sschuberth 2013年

3

对我来说,.vimrc是个问题。临时重命名该文件将其修复。然后调试我的.vimrc。这与ignu的经历非常相似。


是的,我在.vimrc中有!silent colorscheme macvim,可以将colorcheme设置为它(如果存在),如果不存在,则不给我打扰(因此命令行vim可以工作)。另一方面,即使失败,退出状态也将退出状态更改为1。
2014年

3

如果出于任何原因要使用sublime,都可以在全局配置文件中执行以下操作:

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

1

我花了一段时间才找到问题所在,找到了我的一个插件。

(具体来说,它是https://github.com/ervandew/supertab

我想这是自动更新我所有插件的不利之处。

因此,最好的建议是禁用一半的vimrc和插件。如果那没有帮助,则问题出在另一半。


我对supertab有同样的问题。
harithski

您是如何跟踪到超级表的?那将是非常有用的信息。
贾斯汀力

1

另一种选择是使用nano编辑器。

$ whereis nano
$ git config --global core.editor path/to/nano

修复它。


1

我正在尝试压缩提交,如此处https://www.youtube.com/watch?v=V5KrD7CmO4o所示。我的git编辑器(notepad ++)在重新基准化步骤中打开。但是,在修改提交消息步骤中,我看到了“无法执行编辑器”问题。可能是因为git编辑器设置错误,也因为我在Windows系统上的非标准位置安装了notepad ++。也就是说,'git config core.editor'给了我notepad++ -multilnst- nosession

要解决此问题,请提供如下完整路径:

git config --global core.editor "'C:\CustomFolder\NPP\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

请参阅:https : //www.youtube.com/watch?v=YLxdkcT6H4g


0

您确定/ usr / bin / vim在1.7.3上吗?我遇到了同样的问题,因为我安装了仅在1.7.3中受支持的备份插件,由于某种原因,/ usr / bin / vim突然降级为1.7.2,可能是由于XCode的重大更新。 ..


0

当我已经在另一个终端上打开vim进行重新设置时,我也遇到了这个问题。我已经开始重新设置基准,被打断了,当我回来时,我又在另一个终端从头开始尝试,却没有意识到我正处在其他相同的重新基准中。刚在另一个终端中完成vim rebase会话就可以了。


0

奇怪的是,再次尝试对我有用。

没有设置我的core.editor和$ EDITOR变量。


0

对我来说,使用Windows:关闭当前终端,然后打开另一个终端(win + R,键入“ cmd”,然后输入“ enter”),然后突然生效。


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.