Xóa lệnh từ thiết bị đầu cuối trong OS X


24

Giả sử tôi đã gõ một lệnh trong terminal 'mv * .jpg .. \ photos' và khi tôi gõ nhận ra tôi không còn muốn thực hiện lệnh này nữa. Tôi muốn xóa toàn bộ tuyên bố. Tôi không muốn xóa toàn bộ màn hình hoặc xóa bất kỳ lịch sử bash nào mà tôi chỉ muốn hủy bỏ dòng hiện tại và xóa nó.

Có một phím tắt hoặc tôi phải thực sự xóa từng ký tự?

Câu trả lời:


36

Giả sử bạn đang ở trong bash, hãy sử dụng Ctrl+ U.


Cảm ơn! đã làm điều đó. Có một danh sách định dạng các phím tắt được ghi lại ở đâu đó không?
Paul Alexander


2
Điều này làm việc cho tôi trong zshell quá.
LandonSchropp

1
Điều này chỉ hoạt động nếu con trỏ của bạn ở KẾT THÚC của dòng. Đối với những tình huống mà con trỏ của bạn ở đầu, bạn cần sử dụng CTRL-K
Jarrod Nettles

Làm thế nào để bạn gây ra điều này trong một kịch bản?
Jonny

7

Nhiều chương trình chờ bạn nhập một dòng lệnh và sau đó thực thi dòng đó, bao gồm bash, lấy Ctrl+ Cđể có nghĩa là Hủy bỏ nhiệm vụ hiện tại và quay lại dấu nhắc chính.

Một vài chương trình, bao gồm bash, lấy Ctrl+ U( Xóa lệnh từ thiết bị đầu cuối trong OS X ) để có nghĩa là xóa xóa đầu dòng, cho đến con trỏ ra (hoặc xóa toàn bộ dòng).

Trong bash, sự khác biệt có thể quan sát được giữa Ctrl+ CCtrl+ Ubao gồm:

  • Bạn có thể hoàn tác Ctrl+ U, nhưng không Ctrl+ C.
  • Ctrl+ Ugiữ lại một phần của dòng sau con trỏ, nếu có.
  • Ctrl+ Uxóa văn bản bị ảnh hưởng khỏi màn hình; Ctrl+ Chiển thị một dấu nhắc mới bên dưới dòng hiện tại.

Đôi khi bạn muốn dừng gõ một lệnh nhưng nhập nó vào lịch sử shell để chạy sau. Một mẹo hữu ích là đặt một dòng #ở đầu dòng và thực hiện nó: vì dòng này bây giờ là một nhận xét, nó sẽ không làm gì cả. Trong bash, có một phím tắt đơn: Alt+ #.


2

Có một readlinechức năng có lẽ không bị ràng buộc với tổ hợp phím được gọi là kill-whole-linesẽ giết toàn bộ dòng thay vì chỉ giết phần trước con trỏ ( unix-line-discardphần nào đó là một cách hiểu sai và bị ràng buộc với Ctrl- u).

Bạn có thể liên kết nó với bất kỳ tổ hợp phím có sẵn. Tôi thích ShiftAlt- Uvì đó là một chức năng liên quan. Tổ hợp phím đó có thể bị ràng buộc với do-lowercase-versionđiều đó có nghĩa là nó làm bất cứ điều gì mà phiên bản chưa được thực hiện (trong trường hợp này upcase-word). Vì chúng ta không thực sự cần hai chìa khóa để làm điều đó, hãy sử dụng khóa đó.

Bạn có thể thử nó tại dòng lệnh bằng cách tạo ràng buộc theo cách này:

bind '"\eU":kill-whole-line'

hoặc làm cho nó bền bỉ bằng cách đặt dòng này trong ~/.inputrctệp của bạn :

"\eU":kill-whole-line

Để hoàn tác một Ctrl- uhoặc ShiftAlt- U(hoặc bất kỳ thao tác nào có thể hoàn tác), nhấn Ctrl- Shift- _(gạch dưới) hoặc Ctrl- x Ctrl- u(hai lần nhấn phím). Hoặc bạn có thể dán lại (yank) những gì bạn đã giết bằng cách nhấn Ctrl- ycó thể lặp lại nếu bạn muốn nhiều bản sao của văn bản đó.

Nhân tiện, nếu bạn muốn giết văn bản từ con trỏ đến cuối dòng, bạn có thể nhấn Ctrl- k. Vì vậy, thay vì thực hiện các ràng buộc được mô tả ở trên, bạn có thể giết cả một dòng bằng cách nhấn Ctrl- u Ctrl- k. Chỉ phần bị giết bởi lần thứ hai trong số các tổ hợp phím đó sẽ được lưu trong bộ đệm giết, nhưng bạn vẫn có thể hoàn tác hai lần để khôi phục cả hai.

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.