Readline cũng cung cấp khả năng ánh xạ phím tắt tùy chỉnh bằng cách chỉnh sửa file cấu hình .inputrc trong thư mục home.
Dưới đây là hai loại gán phím tùy chỉnh bạn có thể định nghĩa:
- Macro
- Chức năng (Function)
Macro
Bạn có thể định nghĩa một phím tắt sẽ, khi thực thi, điền một chuỗi ký tự tại vị trí con trỏ hiện tại. Để làm này, thêm một dòng với định dạng sau vào file cấu hình .inputrc (hoặc tạo file nếu chưa tồn tại):
<kết hợp phím>: "<chuỗi ký tự>"
Ví dụ, giả sử tôi thường xuyên chuyển hướng đầu ra đến file "~/debug_output.txt". Tôi có thể định nghĩa macro trong .inputrc bằng cách thêm dòng sau:
Control-g: " > ~/debug_output.txt"
Bây giờ, bất cứ khi nào tôi gõ tổ hợp phím Control-g, câu lệnh chuyển hướng sẽ được thêm sau con trỏ, cho phép dễ dàng nối vào cuối các lệnh khác.
Lưu ý sau khi tạo macro:
- Tôi có thể viết tổ hợp phím bằng tiếng Anh (Để biết thêm, xem trang man của bash. Tìm mục "Readline Key Bindings")
- Chuỗi ký tự được chèn bởi macro phải được bao trong dấu ngoặc kép (")
- Lựa chọn Control-g là tùy ý, bạn có thể chọn tổ hợp có ý nghĩa hơn cho bạn.
- Có thể ghi đè các gán phím mặc định (nhớ điều này khi định nghĩa riêng)
- Để gán phím có hiệu lực, bạn phải khởi động một instance shell mới (file .inputrc được đọc khi shell khởi động)
Chức năng (Function)
Bạn cũng có thể tạo gán phím sẽ, khi thực thi, gọi một hàm. Readline cung cấp số lượng lớn hàm định nghĩa sẵn để chọn. Để ánh xạ tổ hợp phím đến hàm định nghĩa sẵn:
<kết hợp phím>: <tên-hàm>
Để xem danh sách hàm định nghĩa sẵn, xem hướng dẫn GNU Readline.
Cũng có thể định nghĩa hàm tùy chỉnh riêng, nhưng yêu cầu viết bằng C và ngoài phạm vi hướng dẫn này. Chúng tôi có thể đề cập ở hướng dẫn riêng sau.
Một hàm định nghĩa sẵn hữu ích là menu-complete. Nó cung cấp hành vi tự động hoàn thành thay thế.
Hành vi mặc định cho tự động hoàn thành (gán phím TAB) là:
- điền lệnh/thư mục/tên file một phần nếu chỉ có một kết quả khớp
- hiển thị danh sách các kết quả có thể khi có hơn 1
menu-complete sẽ thay vào đó lặp qua danh sách các kết quả có thể, điền kết quả tiếp theo mỗi lần hàm được gọi. Hành vi này rất tiện, đặc biệt khi tự động hoàn thành tên file dài. Để gán lại phím TAB dùng hành vi này, thêm dòng sau vào file .inputrc.
TAB: menu-complete
Lưu ý gán phím mới này sẽ không có hiệu lực trong shell hiện tại, bạn phải khởi động instance mới để tải lại file cấu hình .inputrc
Trong hướng dẫn này, chúng ta đã học rằng gán phím dòng lệnh Linux được hỗ trợ bởi công cụ Readline. Một gán phím có thể là 1 trong 2 loại:
- Macro: mở rộng chuỗi ký tự
- Function: thực hiện một hành động
Readline cung cấp bộ gán phím mặc định, nhưng cũng cung cấp sự linh hoạt để tạo gán phím riêng trong file cấu hình .inputrc. Cuối cùng, để xem tất cả gán phím hiện tại, dùng lệnh 'bind'.
bind -p