Bash offre la fonctionnalité pour inverser la recherche via Ctrl+ R. Ensuite, on peut taper une partie d’une commande qui affichera une entrée appropriée de l’historique.
Supposons que ceci soit mon histoire:
vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?
Je recherche foo
. Un nouvel appui sur Ctrl+ Raffiche la prochaine recherche de raccord. Il m'est souvent arrivé que je sois trop rapide et que je dépasse le résultat escompté. Le résultat vim foo3
est affiché et je souhaite maintenant y revenir vim foo2
.
Ma question est donc la suivante: comment naviguer dans la recherche inversée?
bash
command-history
search
k0pernikus
la source
la source
Réponses:
Vous pouvez y accéder via la
forward-search-history
fonction qui est bind par défaut ctrl+s. Malheureusement, il ctrl+sest utilisé pour signalerxoff
par défaut ce qui signifie que vous ne pouvez pas l'utiliser pour changer le sens de la recherche. Il existe deux solutions pour résoudre le problème, l’une en désactivant l’envoi de laxoff/xon
signalisation et l’autre en modifiant le raccourci clavier.forward-search-history
Désactiver xon / xoff
Courez
stty -ixon
dans votre terminal ou ajoutez-le à votre~/.bashrc
. Cela vous permet d'utiliser ctrl+spour utiliser laforward-search-history
fonction d'historique.Pour plus d'informations sur le flux de contrôle, consultez Comment dégeler après une pression accidentelle sur Ctrl-S dans un terminal? et certaines des réponses
Changer le raccourci clavier
Si vous ne souhaitez pas modifier le comportement par défaut de, ctrl+svous pouvez modifier le raccourci clavier pour
forward-search-history
avecbind
. Comme la plupart des clés sont déjà définies dans bash, vous devrez peut-être faire preuve de créativité:Cela liera l’ ctrl+thistorique de la recherche en aval, mais sachez que, par défaut, il est ctrl+texécuté.
transpose-chars
la source
stty -ixon
danszsh
et il fonctionne très bien. Cependant, la désactivation de laxoff/xon
signalisation peut-elle avoir des effets secondaires indésirables ?ctrl+s
pour suspendre la sortie du terminal. Si vous ne l'avez jamais utilisé auparavant, ce n'est pas un problèmeC-s
.. très utile pour utiliser tail sur les journaux du serveur. Soigné ! (J'aimerais avoir un autre vote positif :))bind '"\C-t": history-search-forward'
En guise d'alternative à la recherche inversée et à la recherche avancée fournie par votre bash, vous souhaiterez peut-être examiner:
fzf , un "chercheur flou en ligne de commande".
Il peut remplacer la recherche inversée par défaut de votre bash (et d’autres terminaux).
Ses avantages sont que cela:
Mon flux de travail repose maintenant complètement sur fzf sur la recherche inversée de base sur les machines que je contrôle.
la source