Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 跨越非连续区域的搜索_Vim - Fatal编程技术网

Vim 跨越非连续区域的搜索

Vim 跨越非连续区域的搜索,vim,Vim,我有一个操作、操作阶段和URL的列表。此列表如下所示: 14257 0 : http://google.com/ 14259 0 : http://www.microsoft.com/ 14259 1 14259 2 14261 0 : http://www.apple.com/ 14261 1 14261 2 14262 0 : http://stackoverflow.com/ 14262 1 14263 0 : http://dotancohen.com/ 14263 1 14263 2

我有一个操作、操作阶段和URL的列表。此列表如下所示:

14257 0 : http://google.com/
14259 0 : http://www.microsoft.com/
14259 1
14259 2
14261 0 : http://www.apple.com/
14261 1
14261 2
14262 0 : http://stackoverflow.com/
14262 1
14263 0 : http://dotancohen.com/
14263 1
14263 2
请注意,操作
14257
14262
未进入阶段
2
,而其他操作进入阶段

假设文件已通过
排序
运行。现在,我如何将文件减少到只有未进入stage
2
的行?因此,最终文件看起来是这样的:

14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/

您可以搜索以数字、一些空格和数字开头的所有行
2
。对于每个匹配项,删除该行及其上方的两行。在此之后,只剩下编号为
0
1
的行,因此使用全局搜索并删除不包含冒号的每一行:

function! DeleteNonContinuous()
    while search( '^\v\d+\s+2', 'W' ) != 0
        execute "normal 2kdelete"
    endwhile
    %v/:/delete
endfunction

command! DNC :call DeleteNonContinuous()
像这样使用它:

:DNC
这将产生:

14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/

您可以搜索以数字、一些空格和数字开头的所有行
2
。对于每个匹配项,删除该行及其上方的两行。在此之后,只剩下编号为
0
1
的行,因此使用全局搜索并删除不包含冒号的每一行:

function! DeleteNonContinuous()
    while search( '^\v\d+\s+2', 'W' ) != 0
        execute "normal 2kdelete"
    endwhile
    %v/:/delete
endfunction

command! DNC :call DeleteNonContinuous()
像这样使用它:

:DNC
这将产生:

14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/

您可以搜索以数字、一些空格和数字开头的所有行
2
。对于每个匹配项,删除该行及其上方的两行。在此之后,只剩下编号为
0
1
的行,因此使用全局搜索并删除不包含冒号的每一行:

function! DeleteNonContinuous()
    while search( '^\v\d+\s+2', 'W' ) != 0
        execute "normal 2kdelete"
    endwhile
    %v/:/delete
endfunction

command! DNC :call DeleteNonContinuous()
像这样使用它:

:DNC
这将产生:

14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/

您可以搜索以数字、一些空格和数字开头的所有行
2
。对于每个匹配项,删除该行及其上方的两行。在此之后,只剩下编号为
0
1
的行,因此使用全局搜索并删除不包含冒号的每一行:

function! DeleteNonContinuous()
    while search( '^\v\d+\s+2', 'W' ) != 0
        execute "normal 2kdelete"
    endwhile
    %v/:/delete
endfunction

command! DNC :call DeleteNonContinuous()
像这样使用它:

:DNC
这将产生:

14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/

所以基本上,你要删除所有的行,在接下来的两行继续。 我认为,这一个做到了:

g/\v^%(<(\d+)>\D.*\n)%(\1.*\n)%(\1 2)/d 3

所以基本上,你要删除所有的行,在接下来的两行继续。 我认为,这一个做到了:

g/\v^%(<(\d+)>\D.*\n)%(\1.*\n)%(\1 2)/d 3

所以基本上,你要删除所有的行,在接下来的两行继续。 我认为,这一个做到了:

g/\v^%(<(\d+)>\D.*\n)%(\1.*\n)%(\1 2)/d 3

所以基本上,你要删除所有的行,在接下来的两行继续。 我认为,这一个做到了:

g/\v^%(<(\d+)>\D.*\n)%(\1.*\n)%(\1 2)/d 3

非常感谢。你能解释一下
:g/
行吗?即使只是链接到精美手册也很好。我想了解
%
的用途,以及为什么从
\v
开始。谢谢
\v
表示“非常神奇”的模式,允许使用常用的正则表达式量词而不转义它们,这基本上意味着可以跳过一大堆反斜杠
%(
是一种对模式进行分组的方法,通常比正常的
分组快一点,因为它不会捕获模式。您可以在
:h/\%v
:h/\%(
谢谢。你能解释一下
:g/
行吗?即使只是到精美手册的链接也很好。我想了解
%
是做什么的,以及你为什么从
\v
开始。谢谢!
\v
意味着“非常神奇”模式,它允许使用通常的正则表达式量词而不转义它们,这基本上意味着,您可以跳过一大堆反斜杠。
%(
是一种对模式进行分组的方法,通常比正常的
快一点(
分组,因为它不捕获模式。您可以在
:h/\%v
:h/\%(
谢谢。你能解释一下
:g/
行吗?即使只是到精美手册的链接也很好。我想了解
%
是做什么的,以及你为什么从
\v
开始。谢谢!
\v
意味着“非常神奇”模式,它允许使用通常的正则表达式量词而不转义它们,这基本上意味着,您可以跳过一大堆反斜杠。
%(
是一种对模式进行分组的方法,通常比正常的
快一点(
分组,因为它不捕获模式。您可以在
:h/\%v
:h/\%(
谢谢。你能解释一下
:g/
行吗?即使只是到精美手册的链接也很好。我想了解
%
是做什么的,以及你为什么从
\v
开始。谢谢!
\v
意味着“非常神奇”模式,它允许使用通常的正则表达式量词而不转义它们,这基本上意味着,您可以跳过一大堆反斜杠。
%(
是一种对模式进行分组的方法,通常比正常的
快一点(
分组,因为它不捕获模式。您可以在
:h/\%v
:h/\%上阅读更多有关它的信息(