Existe-t-il un moyen d'utiliser ctrl-r après avoir tapé une partie de la commande dans bash?
13
En bash, la commande Ctrl+ rest très utile, je tape Ctrl+ rwhateveret elle recherche dans mon historique les commandes contenant le mot whatever. Mais si je tape whateveret réalise que je voudrais rechercher ce mot et appuyer sur Ctrl+ rrien ne se passe.
Existe-t-il un moyen d'appuyer sur une touche et de la faire se comporter comme si j'avais tapé Ctrl+ rwhateverau lieu de whateverCtrl+ r?
J'ai les éléments suivants dans mon .inputrc:
"\C-p": history-search-backward
mais cela ne fonctionne que si le début de la ligne est le même.
Vous pouvez rechercher facilement l'historique de bash en utilisant ce que vous avez déjà tapé.
Supposons que vous venez de taper curl -I http://superuser.comet que vous avez oublié de taper Ctrl+ d' rabord:
$ curl -I http://superuser.com
Si vous voulez faire un i-recherche sur votre histoire, allez au début de la ligne d' abord ( Ctrl+ a), entrez i-recherche ( Ctrl+ r) et le type Ctrl+ y. Cela devrait rechercher en utilisant le contenu de tout le texte que vous avez déjà tapé:
Alternativement, vous pouvez utiliser Ctrl+ wau lieu de Ctrl+ ypour rechercher en utilisant uniquement le premier mot du texte que vous venez de taper:
Si vous voulez faire tout cela en une seule frappe, vous pouvez lier une seule touche à une macro de clavier. Si vous voulez utiliser, par exemple, F12exécutez:
$ bind '"\e[24~":"\C-a\C-r\C-y"'
Cela durera pendant la session.
Rendre permanent
Définissez simplement la macro dans votre ~/.inputrc:
"\e[24~":"\C-a\C-r\C-y"
Notez qu'ici nous omettons les guillemets simples.
Je ne sais pas si c'est un problème avec ma configuration, mais après avoir c-rtapé, je c-yn'y colle rien. Si je tape c-yseul, le texte est
collé
Allez-vous d'abord au début de la ligne? (Ca)
hso
1
Vous avez raison, je n'allais pas au début de la ligne. Maintenant, je l'ai dans mon .inputrc "\C-xr": "\C-a\C-r\C-y"et cela fonctionne très bien! Merci pour cette réponse.
skeept
Je pense que c'est la troisième fois que je google cette control+a control+r control+ychose! Merci cette réponse est toujours là! :)
Dr Beco
2
Enregistrez quatre frappes:
Évitez une seconde Ctrl-Ren ajoutant à votre .bashrc(ou à votre .inputrcsi vous préférez):
Je ne comprends toujours pas pourquoi Cy colle la commande dans le champ de recherche (Ca n'est pas censé être une commande "copier", n'est-ce pas?) Et pourquoi Cw ne colle que le premier mot.
marcus
oui, C-anon seulement se déplace, mais mémorise (copie) le contenu déplacé.
Dr Beco
Je ne peux pas confirmer ce comportement (essayez simplement Ca Cy), je pense qu'il est plus probable que Cr comporte des cas spéciaux, mais je ne sais pas où ils sont documentés.
c-r
tapé, jec-y
n'y colle rien. Si je tapec-y
seul, le texte est"\C-xr": "\C-a\C-r\C-y"
et cela fonctionne très bien! Merci pour cette réponse.control+a control+r control+y
chose! Merci cette réponse est toujours là! :)Enregistrez quatre frappes:
Évitez une seconde
Ctrl-R
en ajoutant à votre.bashrc
(ou à votre.inputrc
si vous préférez):Cela mappera ALT-R à CTR-A CTR-R CTR-Y CTR-R
La description:
\C-xr
( CTR-X CTR-R )la source
C-a
non seulement se déplace, mais mémorise (copie) le contenu déplacé.