如何在emacs中搜索和复制?

时间:2013-09-04 02:38:25

标签: emacs

我的文字遵循以下格式:

HEADER hello
...
...

HEADER neighbour
...
...
...

HEADER test1
HEADER test2

我想选择HEADER*\n的所有实例并将其复制到新文档中。所以,结果如下:

HEADER hello
HEADER neighbour
HEADER test1
HEADER test2

是否保留空格并不重要。这可以通过标准的emacs功能实现吗?

3 个答案:

答案 0 :(得分:4)

将整个文档复制到新文档可能更容易,然后使用delete-non-matching-lines

M-x delete-non-matching-lines<RET> ^HEADER<RET>

答案 1 :(得分:2)

不是那么简单,但你可以自己定义这样的功能。就像这里的那个:Emacs copy matching lines

答案 2 :(得分:2)

在缓冲区中,尝试

 C-u M-x occur RET ^HEADER.* RET

它应该只使用您想要的输出创建一个新的缓冲区。然后你可以切换到那个缓冲区并将其保存为文件,或者用C-x hM-w标记它,然后把它放到一个新的缓冲区或任何你需要的地方。

顺便说一句,不是一个简单的开箱即用的答案,但是对于它的价值,有一个很好的库叫做all.el,它给Emacs提供了一个相当有用的“全部”命令(如果使用的话)我没记错)xedit(一个旧的大型机文本编辑器)。该库是here - 你可能也喜欢这种东西。