如何将错误行和更多行复制到 vim 中的文件末尾?

How to copy error line and few more lines to end of file in vim?

我在我的 ansible 日志中发现致命错误并将它们复制到文件末尾以查看所有致命错误。

:g/fatal:/t$

但是我想复制错误和下一行,因为下一行有时会是'ignoring',不需要考虑。我只能找到所需的真正致命错误

如何移动图案并增加几行?在 grep 中我们可以找到 -A -B ,在 g 命令中有什么方法可以做到吗?

编辑:@romainl 的回答绝对更好,对于 OP 正在尝试做的事情应该是首选。

如果您只想复制包含“fatal:”的行和后面的几行,您可以这样做:

/fatal:<CR>y<motion>,其中<CR>输入<motion>可以是,例如,2j表示“这一行和下一行”或G表示“从这一行到文件末尾”等

像从 viex 继承的所有 ex 命令一样,:help :t 可以使用 :help :range。在这种情况下,你想对匹配的行和下面的行进行操作,转换为以下范围:

.,+1

其中:

  • 逗号的left-hand边是第一行,
  • right-hand边是最后一行,
  • .表示当前行,
  • +1代表当前行下一行,

给你这个命令:

:g/fatal:/.,+1t$

注意.是隐含的,++1的简写,所以可以简写为:

:g/fatal:/,+t$