Wie lade ich .inputrc neu?

98

Hintergrund

Ich habe gehört, dass das readline- Modul liest ~/.inputrcund auf diese Weise das Verhalten von Tastenanschlägen unter Programmen wie bash ändert.

Frage

Wie kann ich dies nach der Bearbeitung erneut laden, um das geänderte Verhalten zu sehen, ohne mein Terminalprogramm neu zu starten?

Kapitän Lepton
quelle
8
Hintergrund (nicht falsch) .
Dennis Williamson
3
Ich kam hierher und suchte, wie man .inputrc mit einem Befehl lädt. superuser.com/q/419670/56544
dfrankow
1
@ CaptainLepton Ich habe das gesehen. Das Terminal ist nicht dasselbe wie die Shell. Tun exec bashin einer Bash - Sitzung wird die aktuelle Shell - Sitzung mit einer neuen Bash - Sitzung ersetzen. xtermist ein Terminal.
Kusalananda
1
@Kusalananda Danke für die Klarstellung. Das ist eine gute Idee. Würden Sie vielleicht das Ausführen von> exec bash als das Ausführen einer neuen Shell im aktuellen Terminal beschreiben, anstatt bash neu zu starten, da Sie Ihre vorherige ausführbare Datei ersetzen?
Captain Lepton
1
Ja, es gibt keine Möglichkeit, die aktuelle Shell-Sitzung neu zu starten. Dies ist eine Möglichkeit, dies zu tun. Die Lösung von @maxelost zu verwenden, ist eine andere.
Kusalananda

Antworten:

82

Standardmäßig C-x C-rist an gebunden re-read-init-file.

Weitere Informationen finden Sie im Bash-Referenzhandbuch .

maxelost
quelle
4
Das funktioniert bei mir nicht. Ich habe ein anderes Mapping in der .inputrc Datei ausprobiert und auch kein Glück: "\ eX \ eR": re-read-init-file Irgendwelche Vorschläge?
Captain Lepton
6
Eigentlich @Captain, es tut, außer es nicht der Fall ist klar , Tastenanschläge , die in der Zwischenzeit gelöscht wurden. Wenn Sie z. B. einige hinzufügen, werden sie geladen. Ihre einzige Lösung für diese Probleme ist eine neue bash -l(Shell, die sich wie eine Anmeldeshell verhält), die neu initialisiert wird.
Daniel Beck
Ich bearbeitete gerade, /etc/inputrcaber ich hatte ein fast leeres ~/.inputrc, das verhinderte, dass das in /etc/verwendet wurde. Durch das Entfernen wurde ~/.inputrces gelesen /etc/inputrcund meine Änderungen wurden aktiviert.
Malvineous
1
@Malvineous Ich habe , bevor sie durch das ertappt .. wenn Sie hinzufügen , $include /etc/inputrcan die Spitze der ~/.inputrc, vermeidet es dieses Problem.
Mwfearnley
53

Sie können neue Einträge auch über die Befehlszeile mit neu laden bind -f ~/.inputrc. Dadurch werden die Einträge in .inputrc geladen. Beachten Sie, dass es nur einen Ladevorgang ausführt, keinen "Neuladevorgang", sodass keine Zeilen zurückgesetzt werden, die Sie zufällig aus der .inputrc-Datei entfernt haben.

Um einen schnellen Test von einem sauberen Slate durchzuführen, führen Sie einfach das Programm aus bashund arbeiten Sie dann in der neuen verschachtelten Shell (oder starten Sie ein neues Terminal).

Studgeek
quelle
Ich sehe, korrigiere mich, wenn ich falsch liege, dass bind -fnur wirklich ein Dateiname und keine Datei akzeptiert wird, so dass so etwas bind -f <(echo 'one line with ~/.inputrc syntax')(oder, trivial gesagt, bind -f <(cat ~/.inputrc)) nicht funktioniert. Das ist ein bisschen nervig. Wissen Sie, was ich in dieser Hinsicht tun könnte?
Enrico Maria De Angelis
10

Wählen Sie in .inputrc zuerst Ihre Bindung und binden Sie anschließend die re-read-init-fileFunktion:

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

Drücken Sie CTRLund x, Freigabe beide drücken CTRLund r.

Antonio Bardazzi
quelle