Quando executo shell-command
uma nova sessão, não tenho acesso ao histórico de comandos da última sessão. Como posso ter isso?
shell-command
session
RasmusWL
fonte
fonte
(savehist-mode)
ativou?M-!
, a variável de histórico da qual lê / grava éshell-command-history
, e é coberta com(savehist-mode)
. Se a solicitação é sobre como manter um histórico persistente doscomint-input-ring
buffers do shell, também posso ajudá-lo, mas pela maneira como estou interpretando a pergunta, isso seria possível.Respostas:
A resposta curta é habilitada
(savehist-mode)
no seu .emacs. Isso salvará todos os anéis do histórico do minibuffer por padrão, incluindo oshell-command-history
que é usado porM-!
/(shell-command)
.Enquanto estou nisso, acho que também explicarei como carregar / salvar históricos de
shell-mode
comandos de prompts e outros modos derivadoscomint-mode
.Nota: isso é para minha configuração com bash e OSX, mas a coragem disso deve funcionar na maioria dos ambientes.
Primeiro, você precisa copiar o histórico do shell bash no ambiente do emacs. Por padrão, isso é armazenado em uma variável chamada "HISTFILE". Eu faço isso com o
(exec-path-from-shell)
pacote assim:Então você precisa chamar
(turn-on-comint-history)
seus ganchos de modo apropriado, ou seja,Para modos interativos de rubi, você pode ver que estou usando um
.pry_history
arquivo local por projeto.Então você precisa salvar seus arquivos de histórico de comint ao matar buffers e emacs:
Nota que estou usando
dash.el
para a(--each)
formatação sucinta .Isso tornará o histórico de comandos do minibuffer shell persistente, bem como o histórico de comandos do prompt do bash entre o emacs e outros termos.
fonte
Tenho certeza de que
savehist
pode gerenciar isso, aqui está minha configuração:fonte
Eu acho que você pode dar conselhos
shell-command
para salvar o histórico e remapear algumas combinações de teclas relacionadas, por exemploM-n/p
, para invocar esse histórico ou até mesmo escrever seu próprioshell-command
usando,read-from-minibuffer
se quiser.fonte