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 журнал в режиме только для чтения буфер, который вы можете искать, отличать и отображать.