Có hai trình soạn thảo dòng đang chơi ở đây: trình chỉnh sửa dòng cơ bản được cung cấp bởi kernel (trình chỉnh sửa dòng tty line) và trình chỉnh sửa dòng của bash (được thực hiện thông qua thư viện readline). Cả hai đều có lệnh xóa từ-trước-từ được ràng buộc với Ctrl+ Wtheo mặc định. Khóa có thể được cấu hình cho trình soạn thảo dòng tty chế độ chính tắc thông qua stty werase
; bash bắt chước ràng buộc chính mà nó tìm thấy trong cài đặt tty trừ khi bị ghi đè trong cấu hình của chính nó.
Các werase
hành động trong trình soạn thảo dòng tty không thể được cấu hình. Nó luôn xóa các từ được phân tách bằng khoảng trắng (ASCII). Rất hiếm khi tương tác với trình chỉnh sửa dòng tty - đó là những gì bạn nhận được, ví dụ như khi bạn nhập cat
mà không có đối số. Nếu bạn muốn các ràng buộc khóa ưa thích ở đó, bạn có thể chạy lệnh dưới một công cụ như rlwrap sử dụng readline.
Bash cung cấp hai lệnh để xóa từ trước đó : unix-word-rubout
( Ctrl+ whoặc như được đặt qua stty werase
) và backward-kill-word
( M-DEL
, tức là Esc Backspace) coi một từ là một chuỗi các ký tự chữ và số trong ngôn ngữ hiện tại và_
. Nếu bạn muốn Ctrl+ Backspacexóa chuỗi ký tự chữ và số trước đó, đừng đặt stty werase
và thay vào đó hãy đặt dòng sau vào .inputrc
:
"\C-h": backward-kill-word
Lưu ý rằng điều này giả định rằng thiết bị đầu cuối của bạn gửi ký tự Ctrl + H cho Ctrl+ Backspace. Thật không may, đó là một trong những khóa không có ràng buộc tiêu chuẩn (và Backspaceđặc biệt là một mớ hỗn độn vì lý do lịch sử).
Cũng có một lệnh đối xứng kill-word
được ràng buộc với M-d
( Alt+ D) theo mặc định. Để liên kết nó với Ctrl+ Delete, trước tiên bạn cần tìm ra chuỗi thoát nào mà thiết bị đầu cuối của bạn gửi, sau đó thêm một dòng tương ứng trong của bạn .inputrc
. Gõ Ctrl+ Vrồi Ctrl+ Delete; cái này sẽ chèn cái gì đó giống như ^[[3;5~
nơi ban đầu ^[
là một đại diện trực quan của nhân vật thoát. Sau đó, ràng buộc là
"\e[3;5~": kill-word
Nếu bạn không hài lòng với định nghĩa của một từ, bạn có thể cung cấp từ riêng của bạn trong bash: xem hành vi khó hiểu của các phím bấm kiểu emacs trong bash