我有一个文本文件。 Emacs可以根据正则表达式选择文本并将其置于kill-ring中,这样我就可以将其复制到其他地方了吗?有什么像regex-kill-ring-save?
答案 0 :(得分:3)
受到已经给出的评论的启发(Charles的答案不能像我想要的那样工作),我在isearch / isearch-regexp模式映射中添加了一个新函数,它只将匹配的字符串放入kill ring(而查尔斯提案从匹配字符串的当前点到结尾处杀死:
(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
启用)的好处是,您可以看到搜索字符串在增长,您可以使用{{{ 1}}只要您满意(并使用M-w
返回到之前的位置)。
这适用于Emacs 23.1。不知道它是否适用于所有情况。无论如何,我希望你发现它很有用:)
更新:浏览emacswiki我偶然发现了KillISearchMatch,这或多或少相同(加上一些提示......)。
干杯, 丹尼尔
答案 1 :(得分:1)
我不确定是否已经有这样的功能,但你可以用键盘宏做到这一点:
C-x (
search-forward-regexp
search
或backward-word
等。C-spc
C-w
然后,您可以使用M-x name-last-kbd-macro
命名键盘宏,以便您可以使用名称而不是C-x e
执行宏。
如果要为将来的会话保存宏,可以打开.emacs
并使用M-x insert-kbd-macro
将宏插入缓冲区。之后,您可以将密钥绑定到宏,就像将密钥绑定到普通的emacs函数一样,例如(global-set-key "\C-c m" 'funky-macro-macro)
。
答案 2 :(得分:0)
Isearch+已经这样做了。它可选地设置搜索目标周围的区域。您可以在Isearch期间随时使用 C-SPC 进行切换。