Bash readline xóa cho đến dấu gạch chéo trước


15

Trong chế độ bash emacs, có cách nào để xóa cho đến ký tự gạch chéo trước không? Ví dụ: nếu tôi đã nhập lệnh cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_pathvà chỉ muốn xóa reallylongincorrectfolder. Có phím tắt nào không? Đây là một kịch bản rất comman cho tôi trong bash. Một cái gì đó như dF<char>trong vi?

Câu trả lời:


9
bind -P |grep unix-filename-rubout

Để kiểm tra keybinding với ví dụ. Ctrl- b:

bind \\C-b:unix-filename-rubout

Để sử dụng vĩnh viễn, hãy thêm nó vào ~/.inputrc


2
Để thêm nó vào ~/.inputrc, thêm một dòng như thế này vào tập tin đó : "\C-b": unix-filename-rubout. Để thấy hiệu ứng, bạn sẽ phải bắt đầu một bash shell mới (hoặc chạy một số chương trình khác sử dụng thư viện đường dẫn GNU).
Croad Lang Sơn

11

Alt- BackspaceCtrl- wthường được ánh xạ tới backward-kill-word, điều này thực hiện điều đó. Nếu bạn muốn tìm hiểu những gì nó được ánh xạ trên hệ thống của bạn (nếu có), hãy chạy bind -P | grep '^backward-kill-word'.

Theo giải thích của @Barmar , điều này khác với unix-word-rubout, loại bỏ ranh giới không gian trước đó.


Nhưng điều đó sẽ giết chết toàn bộ từ .. Tôi chỉ muốn giết cho đến nhát chém cuối cùng
woodstok

Nó không loại bỏ chỉ đến dấu gạch chéo cuối cùng ở đây. Dấu gạch chéo là một trong những dấu phân cách từ mặc định. Bạn có chắc là bạn đang sử dụng Bash?
l0b0

Xấu của tôi .. Alt-Backspace sẽ xóa nó cho đến dấu gạch chéo cuối cùng. Sự khác biệt giữa ALt-BackSpace và Ctrl-W là gì?
woodstok

3
Ctl-w thường bị ràng buộc với unix-word-rubout: Giết từ phía sau điểm, sử dụng khoảng trắng làm ranh giới từ.
Barmar

2
Điều này không chính xác làm việc. "Các từ được tạo thành từ các ký tự chữ và số (chữ cái và chữ số)". Do đó, nó sẽ dừng lại ở nhiều hơn là chỉ chém. Mặc định không liên kết unix-filename-ruboutlà tốt hơn một chút, vì nó sẽ dừng lại ở khoảng trắng và dấu gạch chéo.
Sparhawk

6

Đặt cái này vào trong của bạn .inputrcvà bắt đầu một vỏ mới:

C-b:unix-filename-rubout

Ctrl- bbây giờ xóa ngược lại dấu gạch chéo tiếp theo.

Niết bàn!

Đừng quên Ctrl- XCtrl- Esẽ khởi chạy trình soạn thảo của bạn để bạn có thể chỉnh sửa một dòng lệnh phức tạp một cách thoải mái.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.