Тут грають два редактори рядків: основний редактор рядків, що надається ядром (редактор рядків канонічного режиму), та редактор рядків bash (реалізований через бібліотеку readline). Обидва вони мають команду "Стерти до попереднього слова", яка за замовчуванням прив’язана до Ctrl+ W. Ключ може бути налаштований для редактора канонічного режиму тти рядка через stty werase
; bash імітує ключове прив'язку, яке він знаходить у налаштуваннях tty, якщо тільки не буде перекрито у власній конфігурації.
werase
Дія в редакторі TTY лінії не може бути налаштоване. Він завжди стирає (ASCII) слова з обмеженим пробілом. Взаємодія з редактором рядків tty рідко - це те, що ви отримуєте, наприклад, коли ви вводите cat
без аргументів. Якщо ви хочете, щоб там були прив'язки клавіш, ви можете запустити команду під таким інструментом, як rlwrap, який використовує readline.
Bash надає дві команди для видалення попереднього слова : unix-word-rubout
( Ctrl+ wабо як встановлено через stty werase
), і backward-kill-word
( M-DEL
тобто Esc Backspace), яка розглядає слово як послідовність буквено-цифрових символів у поточному слові та_
. Якщо ви хочете Ctrl+ Backspaceстерти попередню послідовність буквено-цифрових символів, не встановлюйте stty werase
, а замість цього поставте наступний рядок у вашому .inputrc
:
"\C-h": backward-kill-word
Зауважте, що це передбачає, що ваш термінал надсилає символ Ctrl + H для Ctrl+ Backspace. На жаль, це одна з тих клавіш, що не мають стандартного прив’язки (і, Backspaceзокрема , це безлад з історичних причин).
Також є симетрична команда, kill-word
яка за замовчуванням прив’язана до M-d
( Alt+ D). Щоб прив’язати його до Ctrl+ Delete, спочатку потрібно з’ясувати, яку послідовність евакуації надсилає ваш термінал, а потім додати відповідний рядок у свій .inputrc
. Введіть Ctrl+ Vпотім Ctrl+ Delete; це вставить щось на зразок, ^[[3;5~
де початковим ^[
є візуальне зображення символу втечі. Тоді зв'язування
"\e[3;5~": kill-word
Якщо вас не влаштовує жодне визначення слова, ви можете вказати своє баш: див. Заплутану поведінку клавіатурних зв'язків стилю emacs у bash