Percebi que o comportamento padrão para armazenar o histórico de comandos é armazenar apenas a entrada mais recente. Digitar ls
e, em ls -al
seguida, inserir history
mostraria:
ls -al
ls
Digitar ls
mais uma vez mostraria:
ls
ls -al
Todas as outras ocorrências desses comandos no histórico de comandos desapareceram. Isso torna difícil reaprender um processo que eu possa ter feito alguns dias atrás.
Existe uma maneira de fazer com que os peixes preservem todas as entradas de comando na mesma ordem em que são inseridas?
Não há configuração para fazer isso automaticamente com a própria função de histórico, não. Dos documentos Fish :
No entanto, se o objetivo é simplesmente capturar o que você digitou para que você possa revisar os comandos mais tarde (no contexto apropriado), isso é totalmente possível via script. Em um nível simples, o que você quer fazer é simplesmente salvar todos os comandos inseridos no prompt em um arquivo que não remove duplicatas.
Crie a seguinte função em
~/.config/fish/conf.d/save_full_history.fish
:Isso faz algumas coisas:
~/.config/fish/conf.d
, ele carregará automaticamente a função toda vez que o Fish for iniciado. Isso é feitoconf.d
porque--on-event
(e outros) ganchos não são ativados em funções de Fish com carregamento lento.--on-event fish_preexec
, a função é executada logo após Enterser pressionada para cada comando.$argv[1]
, salvando-a no~/.local/share/fish/fish_full_history
arquivo para revisão futura.Você pode, é claro, adicionar algo como um timestamp a isso. Por exemplo:
Você também pode criar uma função separada (pode estar no mesmo arquivo) que será executada
fish_posterror
para fazer uma anotação no arquivo quando o comando resultar em um erro.