11

我正在尝试在 eshell 中运行 git 命令。当我运行时:

git log -p

它看起来像这样:

git登录eshell

注意光标前的 ^[[k。向下箭头键不起作用,它会给出错误提示“未找到”。您可以在 minibuffer 中看到它。向下滚动的唯一方法是使用 RETURN 键,它看起来很乱:

git-log in eshell -- 滚动

我的 $TERM 设置为 eterm,我也尝试过 ansi。他们是一样的。有没有人经历过这种情况?

谢谢

编辑:

我有办法解决这个问题。我创建了这个函数:

(defun eshell/git (&rest args)
     (apply 'eshell-exec-visual (cons "git" args)))

所以每次我运行 git 命令时,它都会在 *git* 缓冲区中启动输出。

如果你有其他方法,也请告诉我。

4

5 回答 5

4

您只能使用 RETURN 滚动,因为使用了寻呼机。您可以通过更改 git 的core.pager配置选项永久禁用它,也可以通过将GIT_PAGER环境变量设置为空字符串来临时禁用它。另一个可能的问题来源 - ^[ secuences,用于切换颜色。您可以使用git log命令的--no-color选项禁用它们

于 2011-04-20T13:38:20.770 回答
3

您必须在 git 中打开颜色,并且特定的伪终端在颜色中不起作用。尝试使用m-x ansi-term. 它支持颜色,通常更像终端。

或者你可以试试这个钩子:

 (add-hook 'eshell-preoutput-filter-functions
           'ansi-color-filter-apply)

从这里引用。

于 2011-05-01T06:15:19.097 回答
3

您是否尝试过使用Magit?它将 git 集成到您的正常 Emacs 工作流程中。我不能告诉你太多,因为我才刚刚开始使用 Emacs,而且我还在努力学习基础知识。不过,马吉特看起来真的很不错。安装 magit,在您的 repo 中打开一个文件,然后运行M-x magit-log-long,这将创建一个缓冲区,git log其中包含 ascii 历史图的输出。我相当确定您也可以从该缓冲区中签出旧提交,但您应该阅读手册以确保。

于 2011-04-27T15:04:04.993 回答
1

通过将其设置为禁用 git 的内置寻呼机cat

git config --global core.pager cat
于 2012-09-04T13:21:08.013 回答
0

vc-print-root-log命令 (Cx v L)在只读缓冲区中打印格式良好的 git 日志,您可以从中搜索、比较和显示提交。

于 2017-09-19T08:32:49.173 回答