无法执行编辑器

时间:2010-11-03 23:02:02

标签: git vim

我不经常需要修改多个提交消息,但它已经发生过一次或两次,我不记得看到过这种情况。我希望别人有。当我git rebase -i HEAD~7时,预期列表将在vi中完全按预期打开。我在适当时将pick值更改为edit,然后:wq

结果:Could not execute editor

我的全局core.editor中的.gitconfig设置为vi(我也在极度绝望的行动中将其更改为vim)。我尝试使用mate,但这甚至没有正确打开初始列表,所以我将其更改回来。

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

14 个答案:

答案 0 :(得分:181)

昨天只是其中一天。在云雀上,我决定设置vi的完整路径(例如/usr/bin/vi),而不仅仅是可执行文件。现在一切正常。我必须承认我没有得到它,因为vi完全可执行(我的$EDITOR env变量也设置为vi),但它正在工作,我的技术业力最近并没有那么伟大所以也许我不应该质疑神灵会...

答案 1 :(得分:153)

以下命令

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

修复它。

<强> [编辑]

现在我看到有人已将其发布在评论中。希望它对像我这样的盲人来说仍然有用。

答案 2 :(得分:7)

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

在我的情况下,问题通过adding the -f flag解决了vi命令:

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

一旦这个-f选项到位,我可以使用git rebase -i,当我保存并退出提交列表时,rebase继续进行,而不是给出&#34;无法执行编辑器&#34;错误。

关于选项-f

vim man page
  

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

我还没有使用我知道的GUI版本。我在masOS Sierra 10.12.6上的终端窗口中的bash命令行中运行git。但是,由于git rebase -i等待编辑会话完成,我认为这就是为什么-f选项在这里是必要的。也许vim(没有-f)试图从shell中分叉/分离出于某种原因我无法弄明白。

答案 3 :(得分:5)

我有这个问题,它是由vim的vcscommand插件的某些部分引起的。使用任何这些命令启动vim会导致退出代码1(&#34;错误&#34;):

  • vi
  • vim

但这些给了我退出代码0(&#34;成功&#34;):

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

通过重命名~/.vimrc并运行~/.vim以快速运行vim并打印退出代码,我可以通过禁用vi -c q ; echo $?和{{1}}中的文件来追溯到特定插件。< / p>

答案 4 :(得分:3)

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

答案 5 :(得分:3)

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

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

答案 6 :(得分:1)

我花了一段时间才把我的问题追溯到我的一个插件。

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

我想这是自动更新所有插件的缺点。

所以最好的建议,禁用你的一半vimrc和插件。如果这没有帮助,问题与你的另一半有关。

答案 7 :(得分:1)

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

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

修复它。

答案 8 :(得分: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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

当我已经让vim在另一个终端打开一个rebase时,我也遇到了这个问题。我已经开始使用rebase,被打断了,当我回来时,我在另一个终端从头开始再次尝试它,没有意识到我在其他地方的同一个rebase中间。刚刚完成另一个终端的vim rebase会话工作正常。

答案 11 :(得分:0)

奇怪的是,只是尝试它再次为我工作。

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

答案 12 :(得分:0)

对我来说,使用windows:关闭当前终端,然后打开另一个终端(win + R,键入&#39; cmd&#39;,然后输入&#39;),然后它突然起作用。< / p>

答案 13 :(得分:0)

VS Code解决方案:

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron"