/ / Jak mogę zsh wyłączyć niektóre polecenia z historii? - zsh, zshrc

Jak mogę zsh wyłączyć niektóre polecenia z historii? - zsh, zshrc

Na przykład takie, które zawierają słowo "produkcja"?

Odpowiedzi:

4 dla odpowiedzi № 1
function zshaddhistory() {
emulate -L zsh
if [[ $1 != *"production"* ]] ; then
print -sr -- "${1%%$"n"}"
fc -p
else
return 1
fi
}

Umieść powyższy plik w pliku, który będzie pochodził po uruchomieniu powłoki interaktywnej (do .zshrc lub do pliku pochodzącego z .zshrc tak jak ja).

Alternatywna forma (niejawne dodanie do historii):

function zshaddhistory() {
emulate -L zsh
if [[ $1 = *"production"* ]] ; then
return 1
fi
}

. Uwaga:

print -sr -- "${1%%$"n"}"

jawnie dodaje element do historii. Ale to samo implicite robi zsh, jeśli zshaddhistory zwraca z zerowym kodem wyjścia, więc bez fc -p i z setopt nohistignoredups nohistignorealldups (który jest stanem domyślnym) zobaczysz niepotrzebne duplikaty w historii.

emulate -L zsh jest tutaj, aby upewnić się, że ustawienia emulacji nie wkraczają i nie zmieniają interpretacji treści funkcji. Umieszczam tę linię na początku każdej funkcji zdefiniowanej w konfiguracji zsh.