magit rebase 使用 $EDITOR=vim

Posted

技术标签:

【中文标题】magit rebase 使用 $EDITOR=vim【英文标题】:magit rebasing uses $EDITOR=vim 【发布时间】:2018-06-29 15:16:18 【问题描述】:

我为 windows 安装了 emacs 和 git(必须使用 windows 工作),当我提交时一切似乎都很好,评论消息很好地在 emacs 中弹出,但是当重新设置基准时,我从 magit 中选择“交互式”,我得到选择一个提交,然后我按'Cc C-c',它应该切换到git-rebase-todo缓冲区,但我得到magit-process缓冲区,似乎git试图使用vim并卡在那里:

run C:/Program Files/Git/mingw64/libexec/git-core/git.exe … "rebase" "-i" "55ec1e8^"
Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal

Press ENTER or type command to continue[?1000l[?25h

看起来 magit 在变基时没有修改 $EDITOR,我如何强制 magit 使用 emacs?谢谢。

【问题讨论】:

你可以使用setenv在Emacs的环境中设置变量,它应该被它启动的任何进程继承。 【参考方案1】:

我想通了,和windows没有关系,我在gitconfig中有sequence.editor选项,看来magit不能覆盖这个选项。

【讨论】:

【参考方案2】:

确保使用 Git 2.34(2021 年第四季度),尤其是在 Windows 上:在 Git 操作期间启动的编辑器会话(例如,在 'git commit'(man)git rebase 期间可以让终端处于有趣的状态。

代码路径已更新以保存之前的终端状态,并在之后恢复它,它会产生一个编辑器。

见commit 3d411af,commit e22b245(2021 年 10 月 5 日)Carlo Marcelo Arenas Belón (carenas)。(由 Junio C Hamano -- gitster -- 合并到 commit 853ec9a,2021 年 10 月 18 日)

editor:调用EDITOR后保存并重置终端

签字人:Carlo Marcelo Arenas Belón

当调用 EDITOR 来修改提交消息时,它可能会更改终端设置,并且如果行为不端将导致终端输出损坏,如 Windows Terminal (issue 9359) 的最近报告所示

改为使用compat/terminal提供的功能来保存设置并安全恢复。

您可以得到的错误示例:

【讨论】:

以上是关于magit rebase 使用 $EDITOR=vim的主要内容,如果未能解决你的问题,请参考以下文章

git.exe pull --progress -v --no-rebase "origin" master

在Emacs中使用git操作

git rebase

在 vue 3 中使用 markdown 编辑器

VUE3使用v-md-editor 模仿小程序文档 锚点定位阅读功能 解决图片不显示问题

VUE3使用v-md-editor 模仿小程序文档 锚点定位阅读功能 解决图片不显示问题