2011-04-20 272 views
11

我试图在eshell中运行git命令。当我运行:git-log in eshell

git log -p 

它看起来就像这样:

git-log in eshell

注意,^ [[K之前光标。箭头键不起作用,它会给错误说'找不到'。你可以在minibuffer看到。向下滚动的唯一方法就是使用回车键,它看起来相当混乱:

git-log in eshell -- scrolling

我的$ TERM设置为ETERM,我试图ANSI了。他们是一样的。任何人都经历过这个?

感谢

编辑:

我有办法围绕工作这一点。我创建了这个函数:

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

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

如果您有其他方法,请让我知道。

回答

4

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

+1

GIT_PAGER效果很好,现在我可以在\ * eshell *中做适当的grep。 - 无色似乎没有帮助,但由于没有寻呼机,他们不再显示。谢谢。 – sudo 2011-04-20 14:39:40

3

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

+1

magit是emacs的最好的git包... – 2012-09-04 21:02:21

3

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

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

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

here引用。

+1

为记录,我也有OP的问题,我的ansi颜色工作正常,问题是git的内置寻呼机不能和shell模式和eshell的有限终端功能 – 2012-09-04 13:20:10

1

禁用混帐的内置寻呼机将其设置为cat

git config --global core.pager cat 
+1

如果使用来自eshell和更传统的shell的git,这不是一个非常令人满意的解决方案。 – 2014-06-27 14:18:18

0

vc-print-root-log命令(CX v L)打印格式良好的git的日志中只读缓冲器,你可以搜索,diff和显示来自提交。