Вдохновленный уже приведенными комментариями (ответ Чарльза не работает так, как мне хотелось бы), я добавил новую функцию в карту режима isearch / isearch-regexp, которая помещает только соответствующую строку в список уничтожений (тогда как Предложение Чарльза убивает от текущей точки до конца соответствующей строки):
(defun hack-isearch-kill ()
"Push current matching string into kill ring."
(interactive)
(kill-new (buffer-substring (point) isearch-other-end))
(isearch-done))
(define-key isearch-mode-map (kbd "M-w") 'hack-isearch-kill)
Хорошая особенность подхода isearch / isearch-regexp (который вы можете включить с помощью C-s
и C-M-s
соответственно) заключается в том, что вы можете видеть, как растет строка поиска, и вы можете скопировать ее с помощью M-w
, как только вы удовлетворены (и возвращаетесь туда, где вы были раньше с C-u C-Space
).
Это работает для меня с Emacs 23.1. Не знаю, будет ли это работать во всех ситуациях. В любом случае, я надеюсь, что вы найдете это полезным:)
ОБНОВЛЕНИЕ: Проходя через emacswiki, на котором я наткнулся KillISearchMatch , который предлагает более или менее то же самое (плюс еще несколько советов ...).
Ура,
Daniel