В простом описании необходимо прояснить три концепции:
backward-delete-char (Rubout)
Keys
{ {1}} Существует ключ под названием Удалить , который вы используете в своих примерах.
Эта клавиша стирает "следующий символ".
Если строка содержит test1
, а курсор (мигающий индикатор) находится над буквой s
, Удалить сотрет с
.
Напротив, есть клавиша под названием Backspace , которая при точно таких же условиях стирает букву e
. Это буква, которая предшествует курсору.
Эта клавиша Backspace описывается как «backward-delete-char (Rubout)» в руководстве по bash.
Эта клавиша, очевидно, «Удалить символ за курсором».
Числовой аргумент
Чтобы присвоить ему «числовой аргумент», вам нужно нажать Alt - 2 , например, что поместит ] 2
в качестве аргумента следующей команды (или клавиши).
Опять же, если слово test написано в строке, а курсор находится на s
, нажмите Alt - 2 , а затем ] Backspace . Это Назад сотрет два символа, te
в слове тест
.
Кольцо уничтожения.
Когда что-то стирается, в большинстве случаев помещается в кольцо уничтожения.
Чтобы узнать, что находится внутри "кольца уничтожения", используйте ctrl - y .
Если вы удалите несколько символов с помощью alt - 3 - Backspace , эти символы появятся снова с помощью ctrl - y .
Подробно:
Если вы используете аргумент команды Backspace , вы удалите столько символов, сколько аргумент говорит «перед» текущей позицией курсора.
Если в командной строке есть эта строка:
$ testa testb testc
И курсор находится под буквой «b», Alt - 3 - Backspace удалит символы "est":
$ testa tb testc
Эти символы будут напечатаны обратно с помощью ctrl - y
Теперь:
backward-kill-line (Cx Rubout)
Средство нажатия: ctrl - x Backspace
Это поместит всю строку «перед курсором» в список уничтожений.
И для клавиш: ctrl - x Удалить не определено никаких действий, в результате чего будет напечатан эквивалентный код ANSI:
[3~
В вашем Терминал. Это можно изменить в ~ / .inputrc для библиотеки readline, которую использует bash. Но я считаю, что это выходит за рамки этого ответа.