2

假设我在 Emacs 中打开了一个文件,并使用 Cy 将新内容粘贴到文件末尾。我想处理一种情况,其中 emacs 删除了所有行,除了我使用的那些行M-x highlight-lines-matching-regexp

4

2 回答 2

4

用于M-x keep-lines删除与正则表达式不匹配的行。它还有一个别名M-x delete-non-matching-lines

于 2013-10-29T06:35:18.787 回答
0

Barmar 的回答可能就足够了(Emacs 复制匹配行可能也很有趣),但这里有一个函数(或多或少*)你问的问题:

(defun my-keep-highlighted-lines ()
  "`keep-lines' matching any interactively-provided highlight regexps."
  (interactive)
  (require 'hi-lock)
  (keep-lines
   (mapconcat 'car hi-lock-interactive-patterns "\\|")))

(*) 显然,在高亮显示之后添加到缓冲区的与正则表达式匹配的行仍然会受到影响。

此外,这将使用所有交互式 hi-lock 模式,因此如果您突出显示某些短语或任意正则表达式,这些行也将保留。'line' 正则表达式以 开头^.*和结尾.*$,因此如果您愿意,可以在自定义 mapconcat 函数中对其进行测试。

于 2013-10-29T07:26:38.957 回答