如何临时选择和编辑缓冲区中的某些行?

时间:2013-09-26 16:13:45

标签: emacs

我坚持这个问题。我有一个几乎10k行的文件。其中一些应该删除,我可以从他们的内容中获得提示,例如如果它们包含某个模式“xyz”,则可能必须删除它们。所以,我的想法是:
*仅选择列表中包含每个模式的那些行 *手动检查它们并更改实际要删除的那些,前面加上“ - ”(或类似)
* ...并在最后,删除所有以“ - ”开头的行 由于keep-lines实际上删除了所有未保留的行(TIL),还有其他方法可以做我需要的吗?提前谢谢。

4 个答案:

答案 0 :(得分:4)

一个想法是使用M-x来选择可能的候选者。然后,使用 Occur 缓冲区中的“e”进入“Occur Edit Mode”。在此模式下,Occur缓冲区中的编辑将反映到原始缓冲区中。所以也许你可以完全删除那里的行。

答案 1 :(得分:1)

您可能想尝试M-x all。它类似于M-x occur,只是缓冲区更改会传播到原始缓冲区。 all可以从GNU ELPA安装(即通过M-x list-packages)。

答案 2 :(得分:1)

听起来你可以用query-replace-regexp执行此操作。

  1. M-C-%(或M-x query-replace-regexp
  2. 输入^.*xyz.*$作为搜索字词,并将替换字词留空(按Enter键)
  3. 依次检查每条匹配的行,点击space删除或n离开。确保从缓冲区的开头开始捕捉所有内容。

答案 3 :(得分:1)

您可以获得hide-lines并使用M-x hine-lines-not-matching。由于它仍然是相同的缓冲区(只是以不同方式显示),因此您可以根据需要编辑可见行。