【问题标题】:Emacs: How to copy regex matches?Emacs:如何复制正则表达式匹配?
【发布时间】:2012-10-12 16:35:12
【问题描述】:

我只是尝试使用正则表达式搜索/突出显示缓冲区中的文本并复制它。我不想要整条线,只想要比赛。有什么想法吗?

我有大量包含标签“[12345][09876]”的文本行,我想进行正则表达式 把所有的标签都复制出来。

例如

Lorem ipsum dolor sit amet, consectetuer adipiscing elit [12345][09876], 
sed diam nonummy [12345][123456] nibh euismod tincidunt ut laoreet dolore 
magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud [54321][09876] 
exerci tation ullamcorper suscipit lobortis nisl ut aliquip [23451][09656]

【问题讨论】:

  • 你的意思是 kill 或 copy-region,而不是 yank。
  • 是的,这是一个令人困惑的问题。您是否可以对其进行编辑以使其有意义,或者更明确地说明您想要发生的事情,如果您真的是 yank 的话?
  • 抱歉,我发帖时没有注意到这一点。对不起,我现在已经编辑了。
  • @Mash,我的回答解决了你的问题吗?
  • 使用带有通用参数的发生命令作为下面的 Oleg cmets。

标签: regex emacs


【解决方案1】:

是的,增量搜索不会移动点位置,所以 yank 不会复制匹配项。

最简单的解决方案可能如下。

定义一个复制搜索匹配的函数:

(defun copy-isearch-match ()
    (interactive)
    (copy-region-as-kill isearch-other-end (point)))

并将其添加到搜索模式地图

(define-key isearch-mode-map (kbd "M-w") 'copy-isearch-match)

然后做M-x isearch-forward-regexp你可以按M-w复制比赛。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 2018-02-01
  • 1970-01-01
  • 2018-10-05
相关资源
最近更新 更多