Comment recharger .inputrc?

98

Contexte

J'ai entendu dire que le module readline lisait ~/.inputrcet que c'est ainsi qu'il modifie le comportement des frappes au clavier sous des programmes tels que bash.

Question

Comment puis-je recharger cela après l'édition pour voir le comportement modifié sans redémarrer mon programme de terminal?

Capitaine Lepton
la source
8
Fond (pas faux) .
Dennis Williamson
3
Je suis venu ici pour savoir comment charger .inputrc avec une commande. superuser.com/q/419670/56544
mercredi
1
@ CaptainLepton, j'ai vu ça. Le terminal n'est pas le même que le shell. Faire exec bashdans une session Bash remplacera la session shell actuelle par une nouvelle session Bash. xtermest un terminal.
Kusalananda
1
@ Kusalananda Merci pour la clarification. C'est une bonne idée. Décririez-vous peut-être que exécuter> exec bash exécute un nouveau shell dans le terminal actuel au lieu de redémarrer bash, car vous remplacez l'exécutable précédent?
Capitaine Lepton
1
Oui, il n'y a aucun moyen de "redémarrer" la session shell en cours. C'est une façon de le faire. Utiliser la solution fournie par @maxelost en est un autre.
Kusalananda

Réponses:

82

Par défaut, C-x C-rest lié à re-read-init-file.

Voir le manuel de référence Bash pour plus d'explications.

maxelost
la source
4
Cela ne marche pas pour moi. J'ai essayé un mappage différent dans le fichier .inputrc et également pas de chance: "\ eX \ eR": relire-init-fichier Des suggestions?
Capitaine Lepton
6
@ Captain En fait, c'est le cas, sauf que les frappes de touches effacées entre-temps ne sont pas effacées. Si vous en ajoutez par exemple, ils sont chargés. Votre seule solution pour cela est un nouveau bash -l(shell qui se comporte comme un shell de connexion) qui vient d'être initialisé.
Daniel Beck
J'étais en train de monter /etc/inputrcmais j'avais presque vide ~/.inputrcqui empêchait celui qui était /etc/utilisé. La suppression l’a ~/.inputrcamené à lire /etc/inputrcet à rendre mes modifications actives.
Malvineous
1
@ Malvineous j'ai déjà été surpris par cela .. si vous ajoutez $include /etc/inputrcau sommet de ~/.inputrc, ça évite ce problème.
Mwfearnley le
53

Vous pouvez également recharger de nouvelles entrées à partir de la ligne de commande en utilisant bind -f ~/.inputrc. Cela chargera les entrées dans .inputrc. Notez qu'il ne fait que charger, pas "recharger" - il ne réinitialise donc pas les lignes que vous avez supprimées du fichier .inputrc.

Pour tester rapidement à partir d'une table rase, exécutez bashpuis travaillez dans ce nouveau shell imbriqué (ou démarrez un nouveau terminal).

studgeek
la source
Je vois, corrigez-moi si je me trompe, que bind -fn'accepte vraiment qu'un nom de fichier, et non un fichier, donc quelque chose comme bind -f <(echo 'one line with ~/.inputrc syntax')(ou trivialement bind -f <(cat ~/.inputrc)) ne fonctionnera pas. C'est un peu agaçant. Savez-vous ce que je pourrais faire à cet égard?
Enrico Maria De Angelis
10

Dans .inputrc, choisissez d’abord votre liaison, puis reliez la re-read-init-filefonction:

set editing-mode vi
"\C-x\C-r": re-read-init-file

Appuyez sur CTRLet xrelâchez les deux, appuyez sur CTRLet r.

Antonio Bardazzi
la source