我有一个文本文件。 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-s
和C-M-s
启用)的好处是,您可以看到搜索字符串不断增长,并且您可以在满意后立即使用M-w
复制它(然后返回到您以前曾使用C-u C-Space
)。这对我适用于Emacs 23.1。不知道它是否在所有情况下都有效。无论如何,我希望您觉得它有用:)
更新:遍历了emacswiki,我偶然发现了KillISearchMatch,它暗示或多或少的相同(以及更多提示...)。
干杯,
丹尼尔