2011-04-20 18 views
11

Estoy tratando de ejecutar comandos git en eshell. Cuando corro:git-log en eshell

git log -p 

que se verá así:

git-log in eshell

en cuenta que^[[k antes del cursor. La tecla de flecha hacia abajo no funciona, dará el error dice 'No encontrado'. Puedes ver eso en el minibúfer. La única manera de desplazarse hacia abajo es utilizar tecla de retorno, y se ve bastante desordenado:

git-log in eshell -- scrolling

Mi $ TERM se establece en eterm, y yo trataba de ANSI también. Ellos son lo mismo. ¿Alguien ha experimentado esto antes?

Gracias

Editar:

tengo una manera de trabajar alrededor de este. He creado esta función:

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

Así que cada vez cuando corro comando git, se pondrá en marcha la salida en un búfer * * git.

Si tiene otras formas, por favor, hágamelo saber también.

Respuesta

4

Puede desplazarse solo con RETORNO porque se utiliza el localizador. Puede deshabilitarlo permanentemente cambiando la opción de configuración core.pager de git o puede deshabilitarlo temporalmente configurando GIT_PAGER variable de entorno como cadena vacía. Otra posible fuente de problemas -^[secuencias, que se utilizan para cambiar los colores. Se puede desactivar con --no-color de opción para git log comando

+1

GIT_PAGER funciona muy bien, ahora puedo hacer grep adecuado en \ * eshell *.--no-color no parece ayudar, pero como no hay buscapersonas, ya no se muestran. Gracias. – sudo

3

¿Ha intentado utilizar Magit? Integra git en el flujo de trabajo de Emacs normal. No puedo contarte mucho sobre eso porque acabo de empezar a usar Emacs, y todavía estoy tratando de aprender los conceptos básicos. Sin embargo, Magit parece muy amable. Instale a Magit, abra un archivo en su repositorio y ejecute M-x magit-log-long, que creará un buffer con la salida de git log con un gráfico de historial de ASCII. Estoy bastante seguro de que también puede verificar compromisos anteriores de ese búfer, pero debe leer el manual para estar seguro.

+1

magit es el mejor paquete de git para emacs ... –

3

Debe tener los colores activados en git y ese pseudo-terminal específico no funciona en color. Intenta usar m-x ansi-term. Admite colores y generalmente es más similar a un terminal.

O puede probar con este gancho:

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

referencia desde here.

+1

para el registro, también tengo el problema de OP, mis colores ansi funcionan bien, el problema es que el paginador incorporado de git no funciona bien con el modo shell y el terminal limitado de eshell funcionalidad –

1

desactivar de git localizador incorporado estableciéndolo en cat:

git config --global core.pager cat 
+1

Esta no es una solución muy satisfactoria si se usa git tanto de eshell como de un shell más convencional. –

0

El vc-print-root-log comando (Cx v L) imprime un registro git con un formato agradable en un búfer de sólo lectura que se puede buscar, ver diferencias y mostrar confirma desde.

Cuestiones relacionadas