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 Shift
và 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 cat
và 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
( \e
có nghĩa là một nhân vật thoát).
"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
cat
trá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 \e
trướ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_profile
sử dụng: bind TAB:menu-complete
và 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!).
^[Z
làm việc cho tôi (BASH); Cảm ơn các câu trả lời chi tiết! :)