Làm cách nào để tải lại .inputrc?


98

Lý lịch

Tôi đã nghe nói rằng mô-đun readline đang đọc ~/.inputrcvà đó là cách nó thay đổi hành vi của tổ hợp phím trong các chương trình như bash.

Câu hỏi

Làm cách nào tôi có thể tải lại cái này sau khi chỉnh sửa để xem hành vi đã thay đổi mà không cần khởi động lại chương trình đầu cuối của mình?


8
Bối cảnh (không sai) .
Dennis Williamson

3
Tôi đến đây để tìm cách tải .inputrc bằng một lệnh. superuser.com/q/419670/56544
dfrankow

1
@CaptainLepton Tôi thấy điều đó. Thiết bị đầu cuối không giống như vỏ. Thực hiện exec bashtrong phiên Bash sẽ thay thế phiên shell hiện tại bằng phiên Bash mới. xtermlà một thiết bị đầu cuối.
Kusalananda

1
@Kusalananda Cảm ơn đã làm rõ. Ý tưởng hay đấy. Bạn có thể mô tả việc chạy> exec bash là chạy shell mới trong terminal hiện tại thay vì khởi động lại bash, vì bạn đang thay thế tệp thực thi trước đó của mình?
Thuyền trưởng Lepton

1
Có, không có cách nào "khởi động lại" phiên shell hiện tại. Đây là một cách để làm điều đó. Sử dụng giải pháp mà @maxelost đưa ra là một cách khác.
Kusalananda

Câu trả lời:


82

Theo mặc định, C-x C-rbị ràng buộc với re-read-init-file.

Xem Hướng dẫn tham khảo Bash để được giải thích.


4
Điều này không làm việc cho tôi. Tôi đã thử một ánh xạ khác trong tệp .inputrc và cũng không gặp may: "\ eX \ eR": đọc lại tệp init-file Có đề xuất nào không?
Thuyền trưởng Lepton

6
@Captain Trên thực tế, nó có, ngoại trừ nó không xóa tổ hợp phím đã bị xóa trong thời gian đó. Nếu bạn ví dụ thêm một số, chúng được tải. Giải pháp duy nhất của bạn cho những thứ này là một cái bash -lvỏ mới (vỏ hoạt động giống như vỏ đăng nhập) mới được khởi tạo.
Daniel Beck

Tôi đang chỉnh sửa /etc/inputrcnhưng tôi gần như trống rỗng ~/.inputrc, điều đó ngăn không cho người /etc/dùng được sử dụng. Loại bỏ ~/.inputrcgây ra nó để đọc /etc/inputrcvà làm cho những thay đổi của tôi hoạt động.
Malvineous

1
@Malvineous Tôi đã bị bắt gặp bởi điều đó trước đây .. nếu bạn thêm $include /etc/inputrcvào đầu trang ~/.inputrc, nó sẽ tránh được vấn đề này.
mwfearnley

53

Bạn cũng có thể tải lại các mục mới từ dòng lệnh bằng cách sử dụng bind -f ~/.inputrc. Điều đó sẽ tải các mục trong .inputrc. Lưu ý rằng nó chỉ thực hiện tải chứ không phải "tải lại" - vì vậy nó không đặt lại bất kỳ dòng nào bạn đã xóa khỏi .inputrc.

Để nhanh chóng kiểm tra từ một bảng xếp hạng sạch, chỉ cần chạy bashsau đó làm việc bên trong lớp vỏ mới được lồng (hoặc bắt đầu một thiết bị đầu cuối mới).


Tôi thấy, sửa tôi nếu tôi sai, điều đó bind -fchỉ thực sự chấp nhận tên tệp chứ không phải tệp, vì vậy một cái gì đó như bind -f <(echo 'one line with ~/.inputrc syntax')(hoặc, tầm thường, bind -f <(cat ~/.inputrc)) sẽ không hoạt động. Điều này hơi khó chịu. Bạn có biết tôi có thể làm gì trong khía cạnh này?
Enrico Maria De Angelis


10

Trong .inputrc trước tiên chọn liên kết của bạn và sau khi liên kết re-read-init-filehàm:

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

Nhấn CTRLx, phát hành cả hai, nhấn CTRLr.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.