无法执行编辑器

我通常不需要修改多个提交消息,但这种情况已经发生过一两次,我不记得见过这种情况。我希望有其他人知道。当我使用 git rebase -i HEAD~7时,预期的列表将按照预期的方式在 vi 中打开。我将 pick值在适当的地方更改为 edit,然后更改为 :wq

无法执行编辑器

在我的全球 .gitconfigcore.editor设置是 vi(我也改变了它到 vim在一个疯狂绝望的举动)。我尝试使用 mate,但是它甚至没有正确地打开初始列表,所以我把它改回来。

我使用的是 v1.7.3,欢迎提出任何建议。

47116 次浏览

昨天只是那些日子中的一天。出于好玩,我决定将完整路径设置为 vi (例如 /usr/bin/vi) ,而不仅仅是可执行文件。现在一切都正常了。我必须承认,我没有得到它,因为 vi是完全可执行的自己(我的 $EDITOR env 变量也被设置为 vi) ,但它的工作和我的技术业力最近没有这么大,所以也许我只是不应该质疑神会..。

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

  • vi
  • vim

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

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

通过重命名 ~/.vimrc~/.vim中的文件并运行 vi -c q ; echo $?以快速运行 vim 和打印退出代码,我能够将其追溯到特定的插件。

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

当我已经在另一个终端打开了 vim 以便进行重定位时,我也遇到了这个问题。我已经启动了 rebase,但是被打断了,当我回来的时候,我在另一个终端上从头再试了一次,没有意识到我正在其他地方处于相同的 rebase 中。只要在另一个终端中完成 vim rebase 会话就可以了。

我只是花了点时间才找到我的问题在我的一个插件上。

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

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

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

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

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

对我来说,这是我的问题。Vimrc.临时重命名文件修复了它。然后调试我的。Vimrc.这和 Ignu 的经历非常相似。

以下命令

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

修好了。

[编辑]

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

如果你不管出于什么原因想要使用 subrise,你可以在你的全局配置文件中做如下事情:

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

对我来说,使用 windows: 关闭当前终端,然后打开另一个(win + R,键入‘ cmd’,然后‘ enter’) ,然后它突然工作起来。

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

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

解决了。

与这里的其他答案不同,对我来说,使用 vi 的绝对路径和设置 git core.editor配置不足以解决问题。(这些措施已经到位。)

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

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

一旦这个 -f选项就绪,我就可以使用 git rebase -i,并且当我保存并退出提交列表时,rebase 会按照应该的方式继续进行,而不会出现“ could not execute Editor”错误。

Vim 手册说关于选项 -f,

对于 GUI 版本,Vim 将不会分叉并与启动它时所在的 shell 分离。这个选项应该在 Vim 被一个程序执行时使用,该程序将等待编辑会话完成(例如邮件)。

据我所知,我没有使用 GUI 版本。我在 masOS Sierra 10.12.6的终端窗口中的 bash 命令行上运行 git。但是由于 git rebase -i等待编辑会话结束,我想这就是为什么这里需要 -f选项的原因。也许 vim (没有 -f)由于某种原因试图分叉/分离 shell。

代码解决方案:

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

我试图压缩提交,如下面的 https://www.youtube.com/watch?v=V5KrD7CmO4o所示。我的 git 编辑器(记事本 + +)在 rebasing 步骤中打开。但是,在修正提交消息步骤中,我看到了“无法执行编辑器”的问题。这可能是因为 git 编辑器设置错误,也可能是因为我在 Windows 系统上的一个非标准位置安装了记事本 + + 。也就是说,‘ 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