Jak ponownie załadować .inputrc?

98

tło

Słyszałem, że moduł readline czyta ~/.inputrci tak zmienia zachowanie naciśnięć klawiszy w programach takich jak bash.

Pytanie

Jak mogę ponownie załadować to po edycji, aby zobaczyć zmienione zachowanie bez ponownego uruchamiania programu terminalowego?

Kapitanie Lepton
źródło
8
Tło (niepoprawne) .
Dennis Williamson
3
Przybyłem tutaj, szukając sposobu załadowania .inputrc za pomocą polecenia. superuser.com/q/419670/56544
dfrankow
1
@CaptainLepton Widziałem to. Terminal to nie to samo co powłoka. Wykonanie exec bashsesji Bash zastąpi bieżącą sesję powłoki nową sesją Bash. xtermjest terminalem.
Kusalananda
1
@Kusalananda Dziękuję za wyjaśnienie. To dobry pomysł. Czy mógłbyś opisać uruchamianie> exec bash jako uruchamianie nowej powłoki w bieżącym terminalu zamiast restartowania bash, ponieważ zastępujesz poprzedni plik wykonywalny?
Kapitan Lepton
1
Tak, nie ma możliwości „ponownego uruchomienia” bieżącej sesji powłoki. To jeden ze sposobów na zrobienie tego. Innym rozwiązaniem jest użycie rozwiązania @maxelost.
Kusalananda

Odpowiedzi:

82

Domyślnie C-x C-rjest powiązany z re-read-init-file.

Patrz Instrukcja Bash odniesienia dla wyjaśnienia.

maxelost
źródło
4
To mi nie działa. Próbowałem innego mapowania w pliku .inputrc i również nie powiodło mi się: "\ eX \ eR": re-read-init-file Jakieś sugestie?
Kapitan Lepton,
6
@Captain Właściwie tak, ale nie usuwa skasowanych klawiszy, które zostały w międzyczasie usunięte. Jeśli np. Dodasz niektóre, zostaną one załadowane. Jedynym rozwiązaniem dla nich jest nowa bash -l(powłoka, która zachowuje się jak powłoka logowania), która jest świeżo zainicjowana.
Daniel Beck
Redagowałem, /etc/inputrcale miałem prawie pusty, ~/.inputrcco uniemożliwiało /etc/użycie tego w. Usunięcie ~/.inputrcspowodowało, że przeczytałem /etc/inputrci uaktywniłem moje zmiany.
Malvineous
1
@Malvineous Byłem przyłapany na tym wcześniej .. jeśli dodasz $include /etc/inputrcna szczyt ~/.inputrc, pozwoli to uniknąć tego problemu.
mwfearnley
53

Możesz także ponownie załadować nowe wpisy z wiersza poleceń, używając bind -f ~/.inputrc. Spowoduje to załadowanie wpisów do pliku .inputrc. Zauważ, że po prostu ładuje, a nie „przeładowuje” - więc nie resetuje żadnych linii, które zdarzyły się usunięte z .inputrc.

Aby szybko przetestować z czystej tablicy, po prostu uruchom, basha następnie pracuj w tej nowej zagnieżdżonej powłoce (lub uruchom nowy terminal).

studgeek
źródło
Rozumiem, popraw mnie, jeśli się mylę, że bind -ftak naprawdę akceptuje tylko nazwę pliku, a nie plik, więc coś takiego bind -f <(echo 'one line with ~/.inputrc syntax')(lub, trywialnie bind -f <(cat ~/.inputrc)) nie będzie działać. To trochę denerwujące. Czy wiesz, co mogę zrobić w tym zakresie?
Enrico Maria De Angelis
10

W .inputrc najpierw wybierz powiązanie, a po powiązaniu re-read-init-filefunkcję:

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

Naciśnij CTRLi x, zwolnij oba, naciśnij CTRLi r.

Antonio Bardazzi
źródło