zsh, strzałka w górę powtarza tylko unikalne polecenia?

21

Szukam ustawienia, które sprawi, że gdy kliknę strzałkę w górę, zsh pokaże polecenia, które ostatnio edytowałem. Najważniejsze jest to, że chcę tylko unikatowych poleceń. Obecnie, jeśli wpisuję echo "hello world"50 razy, muszę nacisnąć strzałkę w górę 50 razy, aby uzyskać polecenie, którego użyłem przed wpisaniem polecenia echo. To co najmniej denerwujące.

Wszelkie przemyślenia na temat tego, które ustawienie muszę włączyć / wyłączyć?

Lee Olayvar
źródło

Odpowiedzi:

23

HIST_IGNORE_ALL_DUPSwyrzuci wszystkie poprzednie dopasowania polecenia, co może być mylące, gdy używasz historii jako dziennika tego, co zrobiłeś później.

Lepsze dopasowanie do twoich potrzeb to prawdopodobnie opcja HIST_IGNORE_DUPSlub nawet HIST_FIND_NO_DUPSopcja.

Zobacz man zshoptions | less -p History:

HIST_FIND_NO_DUPS: Podczas wyszukiwania pozycji historii w edytorze linii nie wyświetlaj duplikatów wcześniej znalezionej linii, nawet jeśli duplikaty nie są ciągłe.

HIST_IGNORE_ALL_DUPS: Jeśli nowy wiersz poleceń dodawany do listy historii powiela starszy, starsze polecenie jest usuwane z listy (nawet jeśli nie jest to poprzednie zdarzenie).

HIST_IGNORE_DUPS: Nie wpisuj wierszy poleceń do listy historii, jeśli są duplikatami poprzedniego zdarzenia.

peth
źródło
1
HIST_FIND_NO_DUPS to chyba lepsza odpowiedź niż moja.
Mikel,
3

Nie widzę żadnego sposobu, aby dosłownie to zrobić, ale jeśli ustawisz tę HIST_IGNORE_ALL_DUPSopcję, tylko najnowsza wersja polecenia zostanie zachowana w historii, dając ci ten sam efekt.

Zobacz man zshoptionsszczegóły.

Mikel
źródło
Działa świetnie! Chyba że czegoś mi brakuje, właśnie tego chciałem :)
Lee Olayvar,