Bash oferuje funkcję odwracania wyszukiwania za pomocą Ctrl+ R. Następnie można wpisać część polecenia, która wyświetli odpowiedni wpis z historii.
Załóżmy, że to moja historia:
vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?
Szukam foo
. Wciśnięcie Ctrl+ Rponownie pokazuje następny pasujący wpis wyszukiwania. Często zdarza mi się, że jestem zbyt szybki i przechodzę obok zamierzonego wyniku i vim foo3
jest wyświetlany, a teraz chcę wrócić vim foo2
.
Dlatego moje pytanie brzmi: jak nawigować w ramach wyszukiwania wstecznego?
bash
command-history
search
k0pernikus
źródło
źródło
Odpowiedzi:
Możesz uzyskać do niego dostęp za pomocą
forward-search-history
funkcji domyślnie powiązanej ctrl+s. Niestety ctrl+sjestxoff
domyślnie używany do sygnalizowania, co oznacza, że nie można go użyć do zmiany kierunku wyszukiwania. Istnieją dwa rozwiązania rozwiązania problemu, jeden wyłącza wysyłaniexoff/xon
sygnalizacji, a drugi zmienia przypisanie klawiszyforward-search-history
Wyłącz xon / xoff
Uruchom
stty -ixon
w swoim terminalu lub dodaj go do swojego~/.bashrc
. Umożliwia to ctrl+skorzystanie zforward-search-history
funkcji historii.Aby uzyskać więcej informacji o przepływie sterowania, zobacz Jak odblokować po przypadkowym naciśnięciu Ctrl-S w terminalu? i niektóre odpowiedzi
Zmień skrót klawiszowy
Jeśli nie chcesz zmieniać domyślnego zachowania ctrl+s, możesz zmienić przypisanie klawiszy za
forward-search-history
pomocąbind
. Ponieważ większość kluczy jest już zdefiniowana w bash, może być konieczne uzyskanie kreatywności:Spowoduje to powiązanie ctrl+tz historią wyszukiwania do przodu, ale pamiętaj, że domyślnie ctrl+tdziała
transpose-chars
źródło
stty -ixon
wzsh
i działa bardzo dobrze. Czy są jednak jakieś niepożądane skutki uboczne w wyłączaniuxoff/xon
sygnalizacji?ctrl+s
do wstrzymywania wyjścia terminala. Jeśli nigdy wcześniej go nieC-s
.. bardzo przydatne, gdy używasz taila na logach serwera. Schludnie! (Chciałbym mieć kolejny głos :))bind '"\C-t": history-search-forward'
Jako alternatywę dla podstawowego wyszukiwania wstecznego i wyszukiwania do przodu zapewnianego przez twoją wersję bash, możesz zajrzeć do:
fzf , samozwańczy „program do wyszukiwania rozmytych wierszy poleceń”.
Może zastąpić domyślne wyszukiwanie wsteczne twojego basha (i innych terminali).
Jego zalety to to, że:
Mój obieg pracy całkowicie polega teraz na fzf nad podstawowym wyszukiwaniem wstecznym na maszynach, nad którymi mam kontrolę.
źródło