跳转到包含文本的下一行(vim)
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
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”的行之间的行。等等。