Lưu ý rằng điều này sẽ hoạt động trong thiết bị đầu cuối và chế độ emacs mặc định (mà bạn đang sử dụng if Ctrl+ Wxóa từ trước đó cho bạn). Nó sẽ không hoạt động trong chế độ vi của bash và sẽ không ảnh hưởng đến chính vi / vim. Do đó, đây chỉ là một câu trả lời một phần nhưng tốt nhất người dùng emacs này có thể cung cấp.
Loại điều này được quản lý bởi readline
thư viện có hành vi có thể được kiểm soát thông qua ~/.inputrc
. Chỉnh sửa (hoặc tạo, nếu nó không tồn tại) ~/.inputrc
và thêm dòng này:
"\C-H":"\C-W"
Bây giờ, mở một thiết bị đầu cuối mới và nó sẽ hoạt động.
Giải trình
Thực \C-H
tế là Control+ BackSpace. Bạn có thể thấy mã khóa bằng cách nhấn Ctrl+ Vsau đó, phím bạn đang theo sau. Bạn sẽ thấy BackSpacelợi nhuận đó ^H
.
Bây giờ, nó nên có thể để ràng buộc Control+ BackSpacevới chức năng bash mà xóa từ trước đó ( backward-kill-word
hoặc unix-word-rubout
) bằng cách sử dụng "\C-H": backward-kill-word
. Tuy nhiên, tôi không thể làm việc đó được. Nó hoạt động hoàn toàn tốt với các khóa khác nhau ( "\C-E": backward-kill-word
ví dụ: làm cho Ctrl+ Exóa từ trước đó) nhưng vì một số lý do, tôi không thể làm cho nó hoạt động được BackSpace.
Vì vậy, như một cách giải quyết, chúng tôi chỉ ánh xạ Ctrl+ Backspaceđến Ctrl+ Wđã được ánh xạ tới backward-kill-word
. Vì vậy, khi bạn nhấn Ctrl+ Backspace, nó sẽ được dịch thành Ctrl+ Wmà lần lượt sẽ gửi backward-kill-word
. Tôi có ý tưởng cho cách giải quyết này từ bài SU này .