Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Cách tạo liên kết phím chức năng và macro Linux trong tệp .intputrc

Readline cũng cung cấp cho bạn khả năng ánh xạ các liên kết khóa tùy chỉnh của riêng bạn bằng cách chỉnh sửa tệp cấu hình .inputrc trong thư mục chính của bạn.

Sau đây là hai loại liên kết khóa tùy chỉnh mà bạn có thể xác định:

  1. Macro
  2. Chức năng

Macro

Bạn có thể xác định một keybinding, khi được thực thi, sẽ điền vào một chuỗi ký tự ở vị trí hiện tại của con trỏ. Để thực hiện việc này, hãy thêm một dòng có định dạng sau vào tệp cấu hình .inputrc của bạn (hoặc tạo tệp nếu nó chưa tồn tại):

<key combination>: "<string of characters>"

Ví dụ:giả sử tôi thấy mình liên tục chuyển hướng đầu ra đến tệp “~ / debug_output.txt”. Tôi có thể xác định macro trong .inputrc của mình 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 nhập tổ hợp phím Control-g, câu lệnh chuyển hướng sẽ được thêm vào sau con trỏ của tôi, cho phép tôi dễ dàng nối nó vào cuối các lệnh khác.

Hãy ghi nhớ những điều sau khi bạn tạo macro:

  • Tôi có thể đánh vần các tổ hợp phím bằng tiếng Anh (Để biết thêm thông tin về điều này, hãy xem trang người đàn ông để biết cơ sở. Tìm kiếm phần “Liên kết chính của dòng đọc”)
  • Chuỗi ký tự được macro chèn vào phải được đặt trong dấu ngoặc kép (“)
  • Việc lựa chọn Control-g là tùy ý, bạn có thể chọn kết hợp có ý nghĩa hơn đối với mình.
  • Có thể ghi đè các liên kết khóa mặc định (hãy ghi nhớ điều này khi bạn xác định các liên kết khóa của riêng mình)
  • Để keybinding có hiệu lực, bạn phải bắt đầu một phiên bản shell mới (tệp cấu hình .inputrc được đọc khi khởi động shell)

Chức năng

Bạn cũng có thể tạo một keybinding, khi được thực thi, sẽ gọi một hàm. Readline cung cấp một số lượng lớn các chức năng được xác định trước để lựa chọn. Để ánh xạ tổ hợp phím tới một chức năng được xác định trước:

<key combination>: <function-name>

Để biết danh sách các chức năng có sẵn được xác định trước, hãy xem sổ tay GNU Readline.

Cũng có thể xác định bạn sở hữu các hàm tùy chỉnh, nhưng điều này yêu cầu viết chúng bằng C và nằm ngoài phạm vi của hướng dẫn này. Chúng tôi có thể đề cập đến vấn đề đó như một hướng dẫn riêng sau này.

Một chức năng hữu ích được xác định trước là hoàn thành menu. Nó cung cấp một hành vi tự động hoàn thành thay thế.

Hành vi mặc định để tự động hoàn thành (được ánh xạ tới khóa TAB) là:

  • điền vào một phần lệnh / thư mục / tên tệp nếu một kết quả phù hợp tồn tại
  • hiển thị danh sách các kết quả phù hợp có thể có khi nhiều hơn 1 kết quả tồn tại

menu-complete thay vào đó sẽ xoay vòng qua danh sách các kết quả phù hợp có thể có, điền vào các kết quả phù hợp có thể tiếp theo mỗi khi hàm được gọi. Hành vi này có thể tốt, đặc biệt là khi tự động hoàn thành các tên tệp dài hơn. Để ánh xạ lại khóa TAB nhằm sử dụng hành vi này, hãy thêm dòng sau vào tệp .inputrc của bạn.

TAB: menu-complete

Lưu ý rằng keybinding mới này sẽ không có hiệu lực trong shell hiện tại, bạn phải bắt đầu một phiên bản mới để tải lại tệp cấu hình .inputrc

Trong hướng dẫn này, chúng ta đã biết rằng các liên kết khóa của dòng lệnh Linux được cung cấp bởi một công cụ có tên là Readline. Keybinding có thể là một trong 2 loại:

  • Macro:mở rộng chuỗi ký tự
  • Chức năng:thực hiện một hành động

Readline cung cấp cho chúng tôi một tập hợp các keybinding mặc định, nhưng cũng cung cấp cho chúng tôi sự linh hoạt để tạo riêng của chúng tôi trong tệp cấu hình .inputrc. Cuối cùng, để xem tất cả các keybinding hiện tại, chúng ta có thể sử dụng lệnh "bind".

bind -p