如何在 Emacs 中杀死每一行具有模式:#+NAME: 的行?

How to kill every line that has the pattern: #+NAME:, in Emacs?

我有很多 org-mode 代码块,我想删除它们的所有名称,所以当我再次 运行 它们时它们都是唯一的。

例如,

#+NAME: 05298705-f04e-47df-b7f0-ca8bd2d0ef4c
#+begin_src ein-r :session localhost :results output :exports both :eval no
  life_2015_clean$Status <- as.numeric(as.factor(life_2015_clean$Status))
  ## life_2015_clean <- na.omit(life_2015_clean) ## eliminando muitos dados.
  summary(life_2015_clean)
#+end_src

会变成

#+begin_src ein-r :session localhost :results output :exports both :eval no
  life_2015_clean$Status <- as.numeric(as.factor(life_2015_clean$Status))
  ## life_2015_clean <- na.omit(life_2015_clean) ## eliminando muitos dados.
  summary(life_2015_clean)
#+end_src

以及任何包含#+NAME: (...) 的行。

使用命令 flush-lines(也称为 delete-matching-lines)删除与正则表达式匹配的行。

您只需要一个匹配(仅)要删除的行的正则表达式。

听起来你想要匹配 #+NAME: (...),所以或许可以尝试这样的正则表达式:^#[+]NAME: (.

M-x 删除匹配行

如果您只想删除所有包含“#+NAME:”的行,则您可能不需要此处的正则表达式。但是,这将匹配任何包含此文本的任何行,而不仅仅是行的开头,因此请谨慎使用。

对于可管理的文件大小,一种更谨慎的方法是创建一个宏,该宏使用 isearch 搜索以“#_NAME:”结尾的行,然后转到该行的开头,并终止该行。然后,这可以 运行 交互一段时间,以确保它得到你想要的,一旦你更有信心就变成一个蛮力核弹(如果需要)。

一如既往,在 emacs 中有数百万种方法,这只是一种方法。