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?


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.


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).


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.