Вырезать область из ввода bash

270
Rovanion

Допустим, вы ввели следующую команду в эмулятор терминала:

sudo apt-get apple pie install hamster 

Вы запускаете его и понимаете, что ваш мозг пердит. Вы поместили имена пакетов appleи pieперед подкомандой установки. В этом случае вы можете переформатировать команду, чтобы она была правильной, с помощью следующих команд:

C-p M-p M-p C-k M-p C-y SPC 

Или вы можете посмотреть эту запись на Asciinema .

Но, возможно, есть и другой способ решения этой проблемы: вместо того, чтобы вырезать последнюю часть команды и поместить ее в середину, что выполнимо только в некоторых случаях, можно выбрать область вокруг apple pieи обрезать ее.

Поэтому мой вопрос прост: можно ли выбрать область, как в emacs, для вырезания и вставки?

0

2 ответа на вопрос

0
Rovanion

Оказывается, в библиотеке READLINE есть функция, названная так же, как эквивалент emacs kill-region. Но для того, чтобы использовать ключ, мы сначала должны отсоединить его от функции, определенной в другом месте:

stty werase undef 

Затем мы можем связать ключ с функцией так, как мы хотели:

bind '"\C-w":kill-region' 
0
RedGrittyBrick

Пользователи другого настоящего редактора могут, set -o viа затем использовать. Например d2w$p