Nie można przesłać dalej historii Bash wyszukiwania podobnie jak w CTRL-r

203

Staram się przeszukiwać moją historię bashów podobnie jak w CTRL- r, ale w kierunku do przodu.

To był ból dla mnie, kiedy tylko raz uderzył zbyt często CTRL- r, aby ponownie znaleźć poprzednią komendę.

Jak możesz przeszukiwać historię Bash podobnie jak w wyszukiwaniu wstecznym?

Léo Léopold Hertz 준영
źródło

Odpowiedzi:

321

Możesz także wyszukiwać do przodu. Z podręcznika informacyjnego bash „ 8.2.5 Wyszukiwanie poleceń w historii ”:

Aby wyszukać w historii konkretny ciąg znaków, wpisz C-r. Wpisywanie C-sprzeszukuje historię.

Problem z Ctrl-S polega jednak na tym, że czasami koliduje on z kontrolą przepływu XON / XOFF (na przykład w Konsoli). Wyszukiwanie jest jednak funkcją readline i powinieneś być w stanie powiązać go z innym kluczem. Aktualizacja: Prostsze i lepsze jest po prostu wyłączenie XON / XOFF przez uruchomienie

stty -ixon
hlovdal
źródło
4
Jest to genialne, ale dodałem stty -ixon do mojego .profile i wydaje się, że nie działa w przypadku nowych kart. Jakieś pomysły na to, jak to zrobić? Chciałbym, aby XON / XOFF był domyślnie wyłączony.
John Gallagher,
13
W przypadku, gdy ktoś ma ten sam problem, co ja - jeśli dodasz to do .profile, to nie zadziała. Magia dzieje się tylko wtedy, gdy dodasz go do pliku .bash_profile! Dzięki za świetną wskazówkę - doprowadzało mnie to do szaleństwa od lat.
John Gallagher,
12
@JohnGallagher Ważne jest, aby pamiętać, że .bash_profilei .profilete są pozyskiwane tylko do logowania w muszli. Włożyłbym to .bashrc(z którego pochodzę .profile).
Victor Zamanian
13
[[ $- == *i* ]] && stty -ixonmożna użyć, aby uniknąć opisanego tutaj
mMontu
3
Jeśli używasz PuTTY i nie możesz / nie chcesz utrzymywać .bash_profilena każdej maszynie, z którą się łączysz, ta odpowiedź na superużytkowniku działa naprawdę dobrze.
etap
41

Najlepsza sztuczka, jaką IMHO umożliwia przy pomocy pgupi pgdown. po prostu włóż to do swojego~/.inputrc

"\e[5~": history-search-forward
"\e[6~": history-search-backward

wyloguj się / zaloguj, wpisz pierwsze litery, a następnie pguplub, pgdownaby przeszukać historię

ctrl-R przeszukuj wszystkie wiersze zawierające słowa, podczas gdy wiersze wyszukiwania historii-wyszukiwania zaczynają się od słów

Eric Burghard
źródło
2
Możesz również odkomentować te 2 linie w /etc/inputrc(np. W Ubuntu).
falconepl
2
Wolę powiązać to ze strzałką w górę i w dół: „\ e [A”: historia wyszukiwania wstecz i „\ e [B”: historia wyszukiwania dalej
shmup
Co jeśli nie ma to wpływu na bash?
Sören
26

Możesz wypróbować https://github.com/dvorka/hstr, który umożliwia filtrowanie historii Bash „sugeruj styl skrzynki” z (opcjonalnym) porządkowaniem opartym na metrykach, tzn. Jest znacznie wydajniejszy i szybszy zarówno w przód, jak i w tył:

wprowadź opis zdjęcia tutaj

Może być łatwo wiąże się Ctrl-ri / lubCtrl-s

Martin Dvorak
źródło
5
Jestem zakochany. Szybkie instrukcje instalacji na Ubuntu:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivFan
14

Zazwyczaj wciskam ESCterminal, a potem >. Przynajmniej resetuje się, a potem możesz spróbować rzadziej klikać CTRL+ R.

Eyad Ebrahim
źródło
s / kliknij / naciśnij / Należy także nacisnąć dwukrotnie klawisz Escape (pierwszy raz, aby wyjść z wyszukiwania wstecz).
Croad Langshan