Tôi muốn có thể sao chép và dán văn bản trong dòng lệnh trong Bash bằng cách sử dụng cùng các ràng buộc bàn phím mà Emacs sử dụng theo mặc định (nghĩa là sử dụng C-space
cho set-mark
, M-w
để sao chép văn bản C-y
, M-y
để dán nó, v.v.).
Các tài liệu GNU Bash nói rằng Bash đi kèm với một số các tổ hợp phím thiết lập theo mặc định.
Ví dụ, yanking ( C-y
) hoạt động theo mặc định trên thiết bị đầu cuối của tôi. Tuy nhiên, tôi không thể làm cho các lệnh set-mark
và copy
hoạt động được và chúng dường như không bị ràng buộc với bất kỳ khóa nào theo mặc định.
Thông thường, cách người dùng có thể xác định các ràng buộc chính của mình là thêm chúng vào .inputrc
. Vì vậy, tôi đã xem và tìm thấy các hàm bash sau trong tài liệu mà tôi đoán có thể giúp tôi xác định hành vi giống như Emacs mà tôi muốn (tức là set-mark
với C-space
và copy
với M-w
).
copy-region-as-kill ()
Sao chép văn bản trong vùng vào bộ đệm kill, vì vậy nó có thể được kéo mạnh ngay lập tức. Theo mặc định, lệnh này không bị ràng buộc.
và
set-mark (C-@)
Đặt dấu vào điểm. Nếu một đối số số được cung cấp, nhãn hiệu được đặt ở vị trí đó.
Nếu tôi hiểu chính xác, điều trên có nghĩa copy-region-as-kill
là không bị ràng buộc với bất kỳ trình tự bàn phím nào theo mặc định, trong khi set-mark
bị ràng buộc C-@
theo mặc định.
Tôi đã thử C-@
trên thiết bị đầu cuối của mình, nhưng tôi không nghĩ nó chạy set-mark
vì tôi không thấy bất kỳ văn bản nào được tô sáng khi tôi di chuyển con trỏ. Trong mọi trường hợp, tôi đã thử thêm các ràng buộc bàn phím ( M-w
và C-
) vào các chức năng copy-region-as-kill
và set-mark
ở trên .inputrc
và sau đó tải lại nó C-x C-r
, nhưng điều này không hoạt động. Tôi biết rằng các mục khác của tôi trong .inputrc
công việc vì tôi có các tổ hợp phím do người dùng xác định khác được xác định trong đó.
Có điều gì tôi đang làm sai? Tôi có thiếu thứ gì không?
bash
và chương trình thiết bị đầu cuối nào bạn đang sử dụng?