На страницах информации readline:
info bash -n "Commands For Kill"
M-y
Поверните кольцо-убийцу и дерните новую вершину. Вы можете сделать это только если предыдущая команда —C-y
илиM-y
.
Я понимаю, что это C-y
«вставляет» последний убитый текст, но я не могу понять, что M-y
именно делает.
Можете ли вы объяснить?
решение1
M-yотменяет последнее выдергивание, вращает списки всех сохраненных строк уничтожения и выдергивает новую вершину списка. Попробуйте этот пример:
- введите 5 символов
a b c
(без перевода строки) - поместите курсор (с C-b) перед
c
и введите команду C-kkillc
в верхней части кольца убийств. - Поместите курсор на 2 символа влево и введите, C-kчтобы уничтожить
b
, - и снова в начало строки и введите команду C-kkill
a
.
Теперь введите C-yи вы выдерните a
из верхней части списка. Введите C-yснова, вы просто получите еще один a
, но если вы сразу же введете , M-yон a
будет удален и заменен на b
.
Если вы теперь введете another , C-yто получите b
, а не a
, потому что kill-ring был повернут. Аналогично, a M-yзаменит b
на a c
.
Когда вы вводите последовательность, C-yза которой следует множество, M-yвы получаете каждую из строк кольца-убийцы, одну за другой.
решение2
Я не являюсь пользователем Emacs, но в течение последнего месяца я экспериментировал с режимом Emacs в Readline в качестве альтернативы режиму Vi.
Каждый раз, когда тыубийство(удалить) текст, он удаляется из буфера и добавляется вкольцо убийств. Когда тыдергать(вставить) текст с помощью C-Y
, последний удаленный текст будет напечатан в позиции курсора.
Если вынемедленнопосле этого следует M-Y
(Метаkey обычно можно получить, нажав Alt- Yили Escпосле этого Y), текст, напечатанный C-Y
yank, заменяется вторым по времени уничтоженным текстом. Если после этого вы нажмете еще один M-Y
, вставленный текст заменяется третьим по времени уничтоженным фрагментом текста и так далее. Каждое последующее нажатие изменяет M-Y
вставленный текст на текст следующего «уничтожения» в kill-ring, пока вы не достигнете конца kill-ring – где онвращаетсявернемся к последнему убийству.