Hôm nay tôi đang tham gia, đây là một câu hỏi khác:
Làm thế nào khi tôi đặt những thứ này vào .inputrc, cả hai đều làm điều tương tự?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
tức là cả hai đều làm bất cứ điều gì người cuối cùng nói.
Hôm nay tôi đang tham gia, đây là một câu hỏi khác:
Làm thế nào khi tôi đặt những thứ này vào .inputrc, cả hai đều làm điều tương tự?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
tức là cả hai đều làm bất cứ điều gì người cuối cùng nói.
Câu trả lời:
Readline không biết gì về một công cụ sửa đổi được gọi Shiftvà lặng lẽ bỏ qua các tên công cụ sửa đổi không xác định. Hãy thử wibble-TAB.
Để liên kết một hành động với Shift+ Tab, bạn cần tìm ra chuỗi thoát nào mà thiết bị đầu cuối của bạn gửi. Trong bash, chạy catvà gõ Ctrl+ Vsau đó Shift+ Tab. Điều này sẽ chèn chuỗi thoát theo nghĩa đen. Có khả năng nhân vật đầu tiên sẽ là một nhân vật thoát, được thể hiện như ^[; các thiết bị đầu cuối khác nhau có trình tự thoát khác nhau, nhưng các khả năng phổ biến là ␛[Z(ví dụ thoát, khung bên trái, viết hoa Z) và ␛␉(tức là thoát, tab). Ràng buộc chìa khóa một cách thích hợp ~/.inputrc( \ecó nghĩa là một nhân vật thoát).
"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
cattránh bất kỳ bash ràng buộc. Thông thường bash có cùng ràng buộc Ctrl + V để chèn ký tự tiếp theo theo nghĩa đen để nó không tạo ra sự khác biệt.
$ cat <Enter> <Shift+Tab>đó hiển thị ^[[Z Tôi luôn thêm \etrước của dãy tôi nhận được từ Ctrl+V? Điều này có dịch sang:"\e^[[Z": shell-expand-command
^[bằng `\ e`
Trên Xubfox 16.04, thiết bị đầu cuối: xfce4-terminal 0.6.3, shell: bash
Để Shift+ Tablàm việc tôi phải sử dụng:
bind '"\e[Z": menu-complete-backward'
~/.bash_profilesử dụng: bind TAB:menu-completevà bind '"\e[Z": menu-complete-backward'(lưu ý việc sử dụng dấu ngoặc đơn và dấu ngoặc kép!).
^[Zlàm việc cho tôi (BASH); Cảm ơn các câu trả lời chi tiết! :)