我有一个文本文件。 Emacs 可以根据正则表达式选择文本并将其放入 kill-ring,以便我可以将其复制到其他地方吗?像regex-kill-ring-save这样的东西?
最佳答案
受到已经给出的评论的启发(查尔斯的回答不像我想要的那样工作),我在 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这表明或多或少相同(加上更多提示......)。
干杯,
丹尼尔
关于使用正则表达式复制 Emacs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2183726/