Cuando ejecuto shell-command
una sesión nueva, no tengo acceso al historial de comandos de la última sesión. ¿Cómo puedo tener eso?
shell-command
session
RasmusWL
fuente
fuente
(savehist-mode)
habilitadoM-!
, la variable de historia de la que lee / escribe esshell-command-history
, que está cubierta(savehist-mode)
. Si la solicitud se trata de mantener un historial persistente de loscomint-input-ring
buffers de shell, también puedo ayudar con eso, pero por cómo estoy interpretando la pregunta, esto lo lograría.Respuestas:
La respuesta corta es habilitar
(savehist-mode)
en sus .emacs. Esto guardará todos los anillos del historial de minibúfer de forma predeterminada, que incluyeshell-command-history
cuál es utilizado porM-!
/(shell-command)
.Mientras estoy en ello, creo que también explicaré cómo cargar / guardar historiales de comandos a partir de
shell-mode
mensajes y otros modos que se derivan de elloscomint-mode
.Nota: esto es para mi configuración con bash y OSX, pero las entrañas de esto deberían funcionar en la mayoría de los entornos.
Primero debe copiar su historial de bash shell en el entorno de su emacs. Por defecto, esto se almacena en una variable llamada "HISTFILE". Hago esto con el
(exec-path-from-shell)
paquete así:Luego debe llamar
(turn-on-comint-history)
a sus ganchos de modo apropiados, es decirPara los modos ruby interactivos, puede ver que estoy usando un
.pry_history
archivo local por proyecto.Luego, debe asegurarse de guardar sus archivos de historial de comics cuando elimine buffers y emacs:
Tenga en cuenta que estoy usando
dash.el
para el(--each)
formato sucinto .Esto hará que el historial de comandos del shell de minibúfer sea persistente, así como el historial de comandos de bash prompt entre emacs y otros términos.
fuente
Estoy seguro de que
savehist
puede manejar esto, aquí está mi configuración:fuente
Creo que se puede aconsejar
shell-command
para salvar la historia y volver a asignar algunas asociaciones de teclas relacionadas, por ejemplo,M-n/p
por la invocación de esa historia, o incluso escribir su propiashell-command
mediante el usoread-from-minibuffer
si te gusta.fuente