Impossibile inoltrare la cronologia di Bash di ricerca in modo simile come con CTRL-r


203

Sto cercando di cercare nella mia storia bash in modo simile a CTRL- r, ma per avanzare.

È stato un dolore per me, quando ho colpito una volta troppo spesso CTRL- r, trovare di nuovo il comando precedente.

Come puoi inoltrare la tua cronologia di Bash in modo simile come nella ricerca inversa?

Risposte:


321

Puoi anche cercare in avanti. Dal manuale di informazioni bash, " 8.2.5 Ricerca di comandi nella cronologia ":

Per cercare all'indietro nella cronologia una stringa particolare, digitare C-r. Digitando C-sricerche in avanti attraverso la cronologia.

Il problema con Ctrl-S è tuttavia che a volte si scontra con il controllo del flusso XON / XOFF (ad esempio in Konsole). La ricerca è tuttavia una funzione readline e dovresti essere in grado di associarla a qualche altra chiave. Aggiornamento: più semplice e migliore è solo per disabilitare XON / XOFF eseguendo

stty -ixon

4
Questo è geniale, ma aggiungo stty -ixon al mio .profile e non sembra funzionare con nuove schede. Qualche idea su come farlo funzionare? Mi piacerebbe che XON / XOFF fosse disabilitato di default.
John Gallagher,

13
Nel caso in cui qualcun altro abbia lo stesso problema che ho riscontrato, se lo aggiungi a .profile non ha effetto. È solo quando lo aggiungi al file .bash_profile che avviene la magia! Grazie per un ottimo consiglio: questo mi ha fatto impazzire per anni.
John Gallagher,

12
@JohnGallagher importante da notare è che .bash_profilee .profileforniti da fonti solo per log-in conchiglie. Vorrei inserire questo .bashrc(da cui provengo .profile).
Victor Zamanian,

13
[[ $- == *i* ]] && stty -ixonpuò essere usato per evitare il problema descritto qui
mMontu

3
Nel caso in cui stai usando PuTTY e non riesci / non vuoi mantenere .bash_profilesu ogni macchina a cui ti connetti, questa risposta su superutente funziona a meraviglia.
Fazy

41

Il miglior trucco di IMHO è abilitare con pgupe pgdown. mettilo nel tuo~/.inputrc

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

disconnettersi / accedere, digitare le prime lettere e quindi pgupo pgdownper cercare nella cronologia

ctrl-R cerca in tutte le righe che contengono parole, mentre la cronologia cerca in avanti le righe di ricerca che iniziano con le parole


2
Puoi anche decommentare queste 2 righe /etc/inputrc(ad esempio in Ubuntu).
falconepl,

2
Preferisco associarlo alla freccia su e giù: "\ e [A": history-search-backward e "\ e [B": history-search-forward
shmup

Cosa succede se questo non ha alcun effetto in bash?
Sören

26

Potresti provare https://github.com/dvorka/hstr che consente il filtro "suggerisci stile box" della cronologia di Bash con ordini (facoltativi) basati su metriche, ovvero è molto più efficiente e veloce sia in avanti che all'indietro:

inserisci qui la descrizione dell'immagine

Può essere facilmente legato alla Ctrl-re / oCtrl-s


5
Sono innamorato. Istruzioni rapide da installare su Ubuntu:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivFan,

14

Di solito premo ESCnel terminale, e poi il >. Si ripristina almeno e quindi potresti provare a fare clic meno spesso CTRL+ R.


s / clic / premi / Inoltre, è necessario premere due volte Esc (la prima volta per uscire dalla ricerca all'indietro).
Croad Langshan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.