Kiedy uruchamiam shell-command
w nowej sesji, nie mam dostępu do historii poleceń z ostatniej sesji. Jak mogę to mieć?
shell-command
session
RasmusWL
źródło
źródło
(savehist-mode)
włączoneM-!
, zmienna historii, z której czyta / piszeshell-command-history
, jest objęta(savehist-mode)
. Jeśli prośba dotyczy przechowywania trwałej historiicomint-input-ring
buforów powłoki, ja też mogę w tym pomóc, ale z tego, jak interpretuję pytanie, to by to osiągnęło.Odpowiedzi:
Krótka odpowiedź jest dostępna
(savehist-mode)
w .emacs. Spowoduje to domyślnie zapisanie wszystkich pierścieni historii minibufora, w tym także tego,shell-command-history
który jest używany przezM-!
/(shell-command)
.W tym momencie wyjaśniam, że wyjaśnię również, jak ładować / zapisywać historie poleceń z
shell-mode
podpowiedzi i innych trybów, które się z nich wywodzącomint-mode
.Uwaga: dotyczy to mojej konfiguracji z bash i OSX, ale cechy tego powinny działać w większości środowisk.
Najpierw musisz skopiować historię powłoki bash do środowiska emacsa. Domyślnie jest to przechowywane w zmiennej o nazwie „HISTFILE”. Robię to z
(exec-path-from-shell)
pakietem tak:Następnie musisz wywołać
(turn-on-comint-history)
odpowiednie haki trybu, tjW przypadku interaktywnych trybów ruby możesz zobaczyć, że używam lokalnego
.pry_history
pliku dla poszczególnych projektów.Następnie musisz upewnić się, że zapisałeś pliki historii poleceń podczas zabijania buforów i emacsa:
Uwaga Używam
dash.el
do zwięzłego(--each)
formatowania.To sprawi, że twoja historia poleceń powłoki minibufora będzie trwała, a także twoja historia poleceń bash między emacsem i innymi terminami.
źródło
Jestem pewien, że
savehist
sobie z tym poradzę , oto moja konfiguracja:źródło
Myślę, że możesz poradzić,
shell-command
aby zapisać historię i przekształcić niektóre powiązane powiązania klawiszy, np. WM-n/p
celu wywołania tej historii, a nawet napisać własnąshell-command
, używając,read-from-minibuffer
jeśli chcesz.źródło