Come inoltrare la cronologia delle ricerche con il comando reverse i-search (ctrl + r)?


12

Nel manuale readline

# man readline

Di seguito viene descritto come cercare indietro e in avanti.

reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the  history  as  necessary.   This  is  an  incremental search.

Quando premo ctrl + r e digito "apt-get", sono in grado di fare una cronologia di ricerca inversa toccando continuamente ctrl + r. Ma poi tocco ctrl + se il terminale non va avanti. Sto facendo qualcosa di sbagliato?

Inoltre quale chiave rappresenta il prefisso Meta "M-"?

Risposte:


15

La sequenza C-sè presa dal driver del terminale, come puoi vedere da

stty -a | grep '\^S'

Per liberare la sequenza da utilizzare con readline, impostare la sequenza del terminale di arresto su un'altra sequenza, come ad esempio

stty stop ^J

o rimuoverlo del tutto con

stty stop undef

Dopo ciò C-savrebbe funzionato nel terminale indicato.

Impostalo ~/.bashrcper farlo funzionare in ogni terminale.

La M-sequenza indica la Altchiave, come già notato.


^ J è una buona scelta da allora stop, non è usato per nient'altro
piani cottura

3

Oltre ad assegnare un carattere 'stop' TTY diverso come suggerito sopra, puoi rimuoverlo completamente se non prevedi di usarlo (tendo a non farlo), in questo modo:

$ stty stop undef

Quindi readline può usare control-s per la ricerca in avanti e non otterrai alcun comportamento strano a causa dell'aggiunta di un nuovo carattere di stop.


Questo è un modo molto migliore.
A.Danischewski,

1

forward-search-history (Cs) non funziona (sebbene sia nella pagina man).

'M-' rappresenta il modificatore del tasto Alt.


1
Non correggere la C-sparte, vedere la mia risposta.
enzotib,

0

Si prega di non utilizzare:

stty stop ^J

ma

stty stop ^P

o qualsiasi altra cosa, poiché ^Jcrea grossi problemi con ssh. (Non so perché, comunque.) Dopo aver effettuato l'accesso Entere la barra rovesciata non funzionava. o ho dovuto digitare:

stty sane 
export TERM=linux

prima volevo scrivere

ssh root@192...

così

stty stop ^P

risolti entrambi i problemi contemporaneamente.


0

È possibile disabilitare il controllo del flusso XON / XOFF:

stty -ixon

nel tuo ~ / .profile o simile, allora Ctrl + S sarà riconosciuto.

Esempio


0

Per passare in avanti quando si utilizza la ricerca inversa (con il comando Ctrl-R):

  1. Apri il tuo file .bashrc:
    sudo gedit ~/.bashrc

  2. aggiungi questa riga (la lettera "f" può essere sostituita con un'altra non ancora utilizzata dal sistema)

    bind '"\C-f": forward-search-history' 
    
  3. Chiudi il tuo file e aggiorna il tuo .bashrc (o apri un altro terminale) con il comando:
    source ~/.bashrco. ~/.bashrc

ORA PUOI ANDARE AVANTI NELLA STORIA CON LO SCORCIATO: Ctrl + f

Lavorando su Ubuntu 18.04 LTS


0

Nota che avevo usato

stty stop ^J
stty -ixoff

in .bashrc per abilitare la ricerca in avanti e disabilitare il fastidioso "L'output è stato sospeso premendo Ctrl + S. Premi Ctrl + Q per riprendere" il messaggio in Konsole quando è stato premuto ctrl + s, ma entrambi i comandi hanno interrotto individualmente l'integrazione di Konsole in Dolphin ( il collegamento "F4") nel modo in cui ho dovuto fare due volte ctrl + c per farlo funzionare anche in modo uniforme, ei comandi automatici "cd" dove non venivano iniettati durante la navigazione grafica.

Quindi ora preferisco:

stty stop undef
stty -ixon

Ha lo stesso effetto, tutto sembra funzionare come previsto;)

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.