Bagaimana cara memuat ulang .inputrc?

98

Latar Belakang

Saya telah mendengar bahwa modul readline sedang membaca ~/.inputrcdan begitulah ia mengubah perilaku penekanan tombol pada program seperti bash.

Pertanyaan

Bagaimana saya bisa memuat ulang ini setelah mengedit untuk melihat perilaku yang berubah tanpa memulai kembali program terminal saya?

Kapten Lepton
sumber
8
Latar belakang (tidak salah) .
Dennis Williamson
3
Saya datang ke sini mencari cara memuat .inputrc dengan sebuah perintah. superuser.com/q/419670/56544
dfrankow
1
@ KaptenLepton saya melihat itu. Terminal tidak sama dengan shell. Melakukan exec bashdalam sesi Bash akan mengganti sesi shell saat ini dengan sesi Bash baru. xtermadalah terminal.
Kusalananda
1
@ Kusalananda Terima kasih atas klarifikasi. Itu ide yang bagus. Apakah Anda mungkin menggambarkan menjalankan> exec bash sebagai menjalankan shell baru di terminal saat ini daripada memulai kembali bash, karena Anda mengganti executable sebelumnya?
Kapten Lepton
1
Ya, tidak ada cara "memulai kembali" sesi shell saat ini. Ini adalah salah satu cara melakukannya. Menggunakan solusi yang @maxelost berikan adalah solusi lain.
Kusalananda

Jawaban:

82

Secara default, C-x C-rterikat ke re-read-init-file.

Lihat Manual Referensi Bash untuk penjelasan.

maksimal
sumber
4
Ini tidak berhasil untuk saya. Saya mencoba pemetaan berbeda dalam file .inputrc dan juga tidak berhasil: "\ eX \ eR": baca-ulang-init-file Ada saran?
Kapten Lepton
6
@ Kapten Sebenarnya, tidak, kecuali itu tidak menghapus penekanan tombol yang telah dihapus sementara itu. Jika Anda mis menambahkan beberapa, mereka dimuat. Satu-satunya solusi untuk ini adalah baru bash -l(shell yang berperilaku seperti shell login) yang baru diinisialisasi.
Daniel Beck
Saya sedang mengedit /etc/inputrctetapi saya memiliki hampir kosong ~/.inputrcyang mencegah /etc/yang digunakan. Menghapus ~/.inputrcmenyebabkannya membaca /etc/inputrcdan membuat perubahan saya aktif.
Malvineous
1
@Malvineous Saya sudah ketahuan dengan itu sebelumnya .. jika Anda menambahkan $include /etc/inputrcke atas ~/.inputrc, itu menghindari masalah ini.
mwfearnley
53

Anda juga dapat memuat ulang entri baru dari baris perintah menggunakan bind -f ~/.inputrc. Itu akan memuat entri dalam .inputrc. Perhatikan bahwa ini hanya memuat, bukan "memuat ulang" - jadi itu tidak mengatur ulang setiap baris yang Anda hapus dari .inputrc.

Untuk dengan cepat menguji dari batu tulis yang bersih, jalankan saja bashkemudian bekerja di dalam shell yang bersarang baru (atau memulai terminal baru).

Studgeek
sumber
Saya mengerti, memperbaiki saya jika saya salah, yang bind -fhanya benar-benar menerima nama file, dan bukan file, jadi sesuatu seperti bind -f <(echo 'one line with ~/.inputrc syntax')(atau, sepele, bind -f <(cat ~/.inputrc)) tidak akan berfungsi. Ini agak menyebalkan. Apakah Anda tahu apa yang bisa saya lakukan dalam hal ini?
Enrico Maria De Angelis
10

Di .inputrc, pertama-tama pilih penjilidan Anda dan setelah mengikat re-read-init-filefungsi:

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

Tekan CTRLdan x, lepaskan keduanya, tekan CTRLdan r.

Antonio Bardazzi
sumber