2012-12-26 19 views
32

Powiedziano mi, że w ZSH można zrobić coś takiego jak command, a następnie, gdy uderzysz, filtrował historię na podstawie podanego polecenia. Ale kiedy próbuję tego, to po prostu zmienia historię tak, jak robi to bash. Czy to jest domyślnie wyłączone?Filtrowanie historii ZSH za pomocą komendy

Odpowiedz

50

Hit Ctrl+R, wpisz kilka liter, znajdzie poprzednie polecenie z tymi literami, naciskaj Ctrl + R, aby kontynuować poprzednie wyniki.
Działa w bashu, zsh (i innych powłokach przypuszczam).

Co ja osobiście lubię mieć: wpisz kilka liter, naciśnij Up, pojawiają się poprzednie polecenia zaczynające się od tych samych liter. Bardzo potężny, kocham to.
Musisz powiązać klucze, które chcesz history-beginning-search-backward i history-beginning-search-forward.

Jeśli to ci nie wystarczy, zsh ma wiele opcji, spróbuj zajrzeć pod numer Zsh Line Editor i powiedz nam.
Dla basha, mniej potężny, ale bardziej popularny, Bash commands for history.

+0

Po prostu doskonały, dzięki. – Guu

+1

Zobacz moją odpowiedź na coś bardzo podobnego do tego, co opisałeś w swoim drugim akapicie. Wykonuje pełne wyszukiwanie podłańcuchowe, więc pasuje do dowolnej części polecenia, ale powinno być dość łatwe do modyfikacji, aby dopasować tylko od początku poleceń. – Frost

+12

'CTRL + R' nie będzie działał poza bramą, jeśli używasz powiązań Vima w zsh. Jeśli tak, próbując dodać 'bindkey"^R "history-incremental-search-backward' do twojego pliku ~/.zshrc. – croceldon

4

Jest to funkcja dostępna w fish, ale wygląda na to, że ktoś wykonał dla niej zsh plugin. Nie jest dostępny w standardowym ZSH.

7

użycie wykrzyknika:

> !<starts-with this string> 

Można strzałka w górę/w dół przez wszystkie polecenia, które rozpoczęły się z tym. Cały czas używam "! V", aby uzyskać moje wcześniejsze polecenie otwarcia pliku w Vimie.

Można również użyć znaku zapytania, aby szukać poza dopasowanie początek napisu,

> !?status 

można odnaleźć „stan git”.

+3

To nie działa dla mnie. Piszę! Vi i naciśnij klawisz Up i widzę poprzednie polecenie, a nie poprzednie polecenie zaczynające się na "vi". Czy jest jakieś ustawienie, które muszę włączyć, aby to zadziałało? –

+0

@LarryHastings, musisz najpierw nacisnąć "Enter". Następnie możesz nacisnąć klawisz "Up", aby przejść do historii poleceń. –

+1

Gdzie jest udokumentowana ta składnia? – bennlich

1

Zastosowanie percol dynamiczne wyszukiwanie i poruszanie się po historii z Ctrl - r.

  • zainstalować percol: sudo pip install percol
  • dodać fragment kodu zsh-history-search do pliku .zshrc.

Po Ctrl - r można zobaczyć całą historię w tym samym oknie. Wyszukiwanie słowa kluczowego (dynamicznie) zawęża tę listę. Możesz użyć powiązań klawiszy (takich jak ta emacs like config), aby nawigować w górę i w dół listy i ostatecznie dokonać wyboru.

Oto wyszukiwanie wszystkich poleceń dostępnych w historii z wybranym sudo make install.

percol_history_search_example

Wprowadź zagadnienia wybrane polecenie.

2

Przy włączonych skrótach vim w zsh możesz użyć vi-history-search-backward (/) w trybie poleceń vi.

Powiązane problemy