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-spacecho 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-markvà copyhoạ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-markvới C-spacevà copyvớ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-killlà 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-markbị 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-markvì 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-wvà C-) vào các chức năng copy-region-as-killvà set-markở trên .inputrcvà 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 .inputrccô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?
bashvà chương trình thiết bị đầu cuối nào bạn đang sử dụng?