我有一个文本文件。 Emacs可以基于正则表达式选择文本并将其放入kill-ring,以便可以将其复制到其他地方吗?像regex-kill-ring-save之类的东西?

最佳答案

受到已经给出的注释的启发(Charles的答案不符合我的期望),我在isearch/isearch-regexp模式映射中添加了一个新函数,该函数仅将匹配的字符串放入kill环(而Charles提议将kill从当前点到匹配字符串的结尾):

(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-sC-M-s启用)的好处是,您可以看到搜索字符串不断增长,并且您可以在满意后立即使用M-w复制它(然后返回到您以前曾使用C-u C-Space)。

这对我适用于Emacs 23.1。不知道它是否在所有情况下都有效。无论如何,我希望您觉得它有用:)

更新:遍历了emacswiki,我偶然发现了KillISearchMatch,它暗示或多或少的相同(以及更多提示...)。

干杯,
丹尼尔

10-08 01:12