我不经常需要修改多个提交消息,但它已经发生过一次或两次,我不记得看到过这种情况。我希望别人有。当我git rebase -i HEAD~7
时,预期列表将在vi中完全按预期打开。我在适当时将pick
值更改为edit
,然后:wq
。
结果:Could not execute editor
我的全局core.editor
中的.gitconfig
设置为vi
(我也在极度绝望的行动中将其更改为vim
)。我尝试使用mate
,但这甚至没有正确打开初始列表,所以我将其更改回来。
我正在使用v1.7.3并欢迎任何建议。
答案 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
,
对于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"
答案 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"