跳转到包含文本的下一行(vim)

跳转到包含文本的下一行(vim),vim,Vim,vim中是否有移动到包含文本的下一行(向上或向下)的运动?如果我知道两行之间的行数,就很容易跳过一行,但如果我想在包含文本的每一行上重复一个宏,如果我可以一般地跳转到下一行并在其上添加文本,那么它将更适用 例如: this is a line this is another line <-- cursor is at start of this line line after a blank line <-- want motion that jumps to this line

vim中是否有移动到包含文本的下一行(向上或向下)的运动?如果我知道两行之间的行数,就很容易跳过一行,但如果我想在包含文本的每一行上重复一个宏,如果我可以一般地跳转到下一行并在其上添加文本,那么它将更适用

例如:

this is a line
this is another line <-- cursor is at start of this line


line after a blank line <-- want motion that jumps to this line (blank line count unknown)
这是一行

这是另一行有一个命令
:global
。它实际上不是一个运动,而是一个命令中包含的整个循环:

:g/regex/command
顺便说一句,如果未给出“命令”,则假定为“打印”,因此我们有
:g/re/p
,这是“grep”字/实用程序的真正来源

但是,如果您只需要将光标移动到下一行包含一些“文本”,那么只需简单地键入即可

/text

要跳转到下一个非空行,可以执行以下搜索:

/^.
(按/然后按
^。
然后按Enter)

然后,每次要转到下一个非空行时按n


此解决方案仅在并非所有行都可用于宏的情况下才有用;否则,@Matt的解决方案要好得多。

2}{j
似乎满足了您的要求,假设您从包含文本的行开始。“段落”由不包含文本的行标记


2}
向前跳两段<代码>{< /代码>在目标段落开始之前跳转到空白行,并且<代码> j>代码>向下移动一行,将你放在目标段落中的第一个字符。测试这个,我发现只有标签和/或空格的行。

AHH……不是我所希望的,但是谢谢分享关于全局逗号的信息。nd,因为它为我提供了这个场景所需的大部分内容。我可以使用它来选择要将宏应用到的行,比如
:g/\w$/norm!@q
@JoshL Regex也可以用作“行号”在命令行中:
:/^$/print
将打印下一个非空行并将光标移动到该行。或者
:/begin/,/end/delete
将删除包含“begin”和“end”的行之间的行。等等。