Могу ли я сохранить тот же предмет для янки в Emacs? - PullRequest
11 голосов
/ 24 сентября 2010

В Emacs я часто делаю что-то, чтобы вырезать немного текста, а затем заменить другой бит на вырезанный текст. Итак, скажем, у меня есть текст, который я хочу вернуть, как последний элемент в моем kill-ring. Я возвращаю его на новое место, затем убиваю текст, который уже был там. Но теперь убитый текст является последним элементом в kill-ring. Поэтому в следующий раз, когда я захочу вырвать первый предмет, я должен сделать C-y M-y . Затем в следующий раз в kill-ring появятся два новых элемента, поэтому мне нужно будет сделать C-y M-y M-y и так далее.

Полагаю, есть лучший способ сделать это. Может кто-нибудь просветить меня, пожалуйста?

Ответы [ 5 ]

9 голосов
/ 24 сентября 2010

Несколько альтернатив:

  1. Включите delete-selection-mode и используйте C-d или delete , чтобы удалить регион, не касаясь kill-ring.
  2. Используйте C-x r s i для сохранения текста в регистр i, а затем C-x r i i для вставки сохраненного текста.
  3. Если шаблон заменяемых текстов может быть записан в регулярном выражении, используйте query-replace-regexp ( C-M -% ).
6 голосов
/ 24 сентября 2010

Вы должны использовать delete-region вместо kill-region.

delete-region удаляет регион, не помещая его в список уничтожений.По умолчанию он привязан к <menu-bar> <edit> <clear>.

Если вы хотите использовать привязки по умолчанию без использования меню, вы можете использовать delete-rectangle с Cx r d но он работает на прямоугольнике.Было бы хорошо использовать его в одной строке, как delete-region.

4 голосов
/ 21 августа 2011

Один из старейших и наиболее хорошо хранимых секретов в Emacs - не знаю почему: Emacs имеет вторичный отбор .

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

Выберите какой-нибудь текст, а затем вставьте дополнительный, чтобы заменить его.Повторите в другом месте.Зачастую это более удобно, гибко и точно, чем что-то вроде запроса-замены.

Пожалуйста, посмотрите, для вашего же блага - может быть, это перестанет быть такой малоизвестной функцией ... http://www.emacswiki.org/emacs/SecondarySelection

2 голосов
/ 24 сентября 2010

Я написал эту функцию, чтобы вытолкнуть новый предмет из списка убийств:

(defun my-kill-ring-pop ()
  "Pop the last kill off the ring."
  (interactive)
  (when kill-ring
    (setq kill-ring (cdr kill-ring)))
  (when kill-ring-yank-pointer
    (setq kill-ring-yank-pointer kill-ring))
  (message "Last kill popped off kill-ring."))

Итак, после того, как я убил что-то, что не хочу оставлять, я нажал клавишу, которая вызывает это.

0 голосов
/ 26 февраля 2013

С этим связано M-x browse-kill-ring.Если вы используете M-x anything, вы также можете использовать M-x anything-show-kill-ring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...