eshell中的git-log

时间:2011-04-20 04:42:58

标签: git emacs eshell

我正在尝试在eshell中运行git命令。我跑的时候:

git log -p

它看起来像这样:

git-log in eshell

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

git-log in eshell -- scrolling

我的$ TERM设置为eterm,我也尝试了ansi。他们是一样的。以前有人经历过这个吗?

由于

编辑:

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

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

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

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

5 个答案:

答案 0 :(得分:4)

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

禁用它们

答案 1 :(得分:3)

您是否尝试过使用Magit?它将git集成到您的普通Emacs工作流程中。我不能告诉你很多,因为我刚刚开始使用Emacs,我仍然在努力学习基础知识。马吉特看起来真的很不错。安装magit,在您的仓库中打开一个文件,然后运行M-x magit-log-long,这将创建一个缓冲区,其输出为git log,带有ascii历史记录图。我很确定你也可以从那个缓冲区中检查旧的提交,但你应该阅读手册以确定。

答案 2 :(得分:3)

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

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

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

引自here

答案 3 :(得分:1)

通过将git的内置寻呼机设置为cat来禁用它:

git config --global core.pager cat

答案 4 :(得分:0)

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