是否可以在grep模式下手动删除匹配项?


9

运行后(grep),grep缓冲区将显示匹配项。某些匹配项不相关,最好手动删除它们。这样,我可以使用grep缓冲区仅保存与当前调查相关的那些匹配。

这可能吗?

Answers:


10

绝对。这样做非常有用M-x flush-linesM-x keep-lines是你的朋友,以及刚刚C-k等等。

(您要做的第一件事当然C-x C-q是使缓冲区可写。)


如果您使用的库的grep +grep+.el),那么你有这些命令,删除注释行和切换等去除: grepp-remove-commentsgrepp-toggle-comments,这必将在grep的缓冲区;M-;分别。

(Grep +还为您提供了简化多个grep缓冲区的命令:+grepp-new-buffer),bgrepp-choose-buffer)和rgrepp-rename-buffer-to-last)。)


也有一些是只读的其他缓冲区默认和它有时会使用有用的C-x C-q,然后对其进行编辑,特别是(恕我直言)*Messages**Help**Colors*(来自M-x list-colors-display)。信息使用,甚至有一个命令,可以编辑当前节点。

不幸的是(IMHO),Emacs通常已经放弃了这种用法,使其变得更加困难。例如,*Help**Messages*缓冲器现在在各自的模式,即以编辑他们通常需要到另一模式或(2)使用(1)改变该装置定义的键C-q,以便能够插入某些字符。


1
我会说这个答案改变了我的生活。
cammil

;-) ............
德鲁

0

如果您是邪恶的用户,则可以使用像这样的绑定zww 'read-only-mode切换read-only-map。禁用read-only-mode然后使用evil-delete第(即dd)行。当然,这不会自动删除像这样的所有行flush-lines,但是,如果您要删除整个区域而不使用复杂的正则表达式,那么这就是您的朋友。


0

winnow.el提供了一个方便的次要模式,旨在用于compilation-mode缓冲区(或派生类,包括grep-mode)中。

它启用与flush-lines和等价的键绑定keep-lines,并为您处理文本的只读性。

Key   Function
x     winnow-exclude-lines
m     winnow-match-lines
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.