我坚持这个问题。我有一个几乎10k行的文件。其中一些应该删除,我可以从他们的内容中获得提示,例如如果它们包含某个模式“xyz”,则可能必须删除它们。所以,我的想法是:
*仅选择列表中包含每个模式的那些行
*手动检查它们并更改实际要删除的那些,前面加上“ - ”(或类似)
* ...并在最后,删除所有以“ - ”开头的行
由于keep-lines
实际上删除了所有未保留的行(TIL),还有其他方法可以做我需要的吗?提前谢谢。
答案 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
执行此操作。
M-C-%
(或M-x query-replace-regexp
)^.*xyz.*$
作为搜索字词,并将替换字词留空(按Enter键)space
删除或n
离开。确保从缓冲区的开头开始捕捉所有内容。答案 3 :(得分:1)
您可以获得hide-lines并使用M-x hine-lines-not-matching
。由于它仍然是相同的缓冲区(只是以不同方式显示),因此您可以根据需要编辑可见行。