Git -log в eshell

Я пытаюсь запустить команды git в eshell. Когда я запускаю:

git log -p

он будет выглядеть следующим образом:

git-log in eshell

Обратите внимание, что ^ [[k перед курсором. Клавиша со стрелкой не работает, она выдает сообщение об ошибке "Не найден". Вы можете видеть это в минибуфере. Единственный способ прокрутки вниз - использовать клавишу RETURN, и это выглядит довольно грязно:

git-log in eshell -- scrolling

My $TERM настроен на eterm, и я тоже попробовал ansi. Они одинаковые. Кто-нибудь испытал это раньше?

Спасибо

Edit:

У меня есть способ справиться с этим. Я создал эту функцию:

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

Поэтому каждый раз, когда я запускаю команду git, она запускает вывод в буфере * git *.

Если у вас есть другие способы, сообщите мне об этом.

Ответ 1

Вы можете прокручивать только с помощью RETURN, поскольку используется пейджер. Вы можете отключить его навсегда, изменив параметр конфигурации git core.pager, или вы можете временно отключить его, установив переменную среды GIT_PAGER в пустую строку. Другой возможный источник проблемы - ^ [secuences, которые используются для переключения цветов. Вы можете отключить их с помощью параметра - без цвета для команды git log

Ответ 2

Вы пытались использовать Magit? Он объединяет git в ваш обычный рабочий процесс Emacs. Я не могу рассказать вам об этом, потому что я только начал использовать Emacs, и я все еще пытаюсь изучить основы. Магит кажется действительно приятным. Установите magit, откройте файл в своем репо и запустите M-x magit-log-long, который создаст буфер с выходом git log с графиком истории ascii. Я уверен, что вы также можете проверить старые коммиты из этого буфера, но вы должны прочитать руководство, чтобы быть уверенным.

Ответ 3

У вас должны быть цвета, включенные в git, и что конкретный псевдотерминал не работает в цвете. Попробуйте использовать m-x ansi-term. Он поддерживает цвета и, как правило, более терминальный.

Или вы можете попробовать этот крючок:

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

Ссылка на здесь.

Ответ 4

отключите встроенный пейджер git, установив его на cat:

git config --global core.pager cat

Ответ 5

Команда vc-print-root-log (Cx v L) печатает красиво отформатированный git журнал в режиме только для чтения буфер, который вы можете искать, отличать и отображать.