如何将错误行和更多行复制到 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
表示“从这一行到文件末尾”等
像从 vi
和 ex
继承的所有 ex 命令一样,:help :t
可以使用 :help :range
。在这种情况下,你想对匹配的行和下面的行进行操作,转换为以下范围:
.,+1
其中:
- 逗号的left-hand边是第一行,
- right-hand边是最后一行,
.
表示当前行,
+1
代表当前行下一行,
给你这个命令:
:g/fatal:/.,+1t$
注意.
是隐含的,+
是+1
的简写,所以可以简写为:
:g/fatal:/,+t$
我在我的 ansible 日志中发现致命错误并将它们复制到文件末尾以查看所有致命错误。
:g/fatal:/t$
但是我想复制错误和下一行,因为下一行有时会是'ignoring',不需要考虑。我只能找到所需的真正致命错误
如何移动图案并增加几行?在 grep 中我们可以找到 -A -B ,在 g 命令中有什么方法可以做到吗?
编辑:@romainl 的回答绝对更好,对于 OP 正在尝试做的事情应该是首选。
如果您只想复制包含“fatal:”的行和后面的几行,您可以这样做:
/fatal:<CR>y<motion>
,其中<CR>
是输入,<motion>
可以是,例如,2j
表示“这一行和下一行”或G
表示“从这一行到文件末尾”等
像从 vi
和 ex
继承的所有 ex 命令一样,:help :t
可以使用 :help :range
。在这种情况下,你想对匹配的行和下面的行进行操作,转换为以下范围:
.,+1
其中:
- 逗号的left-hand边是第一行,
- right-hand边是最后一行,
.
表示当前行,+1
代表当前行下一行,
给你这个命令:
:g/fatal:/.,+1t$
注意.
是隐含的,+
是+1
的简写,所以可以简写为:
:g/fatal:/,+t$