2011-04-20 285 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和顯示來自提交。