Xóa toàn bộ đối số trong dòng lệnh bash hiện tại


13

Sử dụng ^W(unix-word-rubout) Tôi có thể dễ dàng xóa một "từ" khỏi lệnh hiện tại trong bash shell của mình.

Tuy nhiên, khi xử lý các đối số được trích dẫn có chứa khoảng trắng (hoặc đối số không được trích dẫn có chứa dấu cách thoát dấu gạch chéo ngược), điều này không hoạt động tốt vì nó chỉ xóa một từ chứ không xóa toàn bộ đối số.

Vì vậy, tôi đang tìm cách để xóa toàn bộ đối số.

Ví dụ (con trỏ luôn ở cuối):

$ foo --bar "foo bar" meow
[black magic]
$ foo --bar "foo bar"
[black magic]
$ foo --bar
[black magic]
$ foo

Là chuyển sang zsh một tùy chọn? (Tôi không biết cách thực hiện bằng zsh một cách thủ công, nhưng nó có một số mã phân tích dòng lệnh có thể truy cập được bằng trình chỉnh sửa dòng (hoặc ít nhất là hệ thống hoàn thành), do đó sẽ dễ dàng hơn).
Gilles 'SO- đừng trở nên xấu xa'

Câu trả lời:


14

Bash có các lệnh readline không bị ràng buộc theo mặc định. Bạn có thể tìm thấy chúng tại tài liệu tham khảo: http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

Lệnh bạn đang tìm kiếm được gọi là "shell-backward-kill-word". Bạn phải chọn phím tắt trước. Hãy sử dụng Crtl + p, vì đó là "lệnh trước" - giống như mũi tên lên.

bind '"\C-p": shell-backward-kill-word'
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.