Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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,以下是我正在使用的原材料: line1=a1 abc line2=abc line3=aba line4=cbc 我想匹配不包含“abc”字符串的行,结果是: line3=aba line4=cbc 我怎样才能在vim中获得它?可能表达式是perl中的(?!abc),我不确定如何在vim中编写正则表达式。来自: 删除与图案不匹配的所有线条 :g//d 当然,您可以替换结尾处的d,而不是从以下位置删除行…: 删除与图案不匹配的所有线条 :g//d 当然,您可以替换结尾处的d来执行除删除行以外

以下是我正在使用的原材料:

line1=a1 abc
line2=abc
line3=aba
line4=cbc 
我想匹配不包含“abc”字符串的行,结果是:

line3=aba
line4=cbc
我怎样才能在vim中获得它?可能表达式是perl中的(?!abc),我不确定如何在vim中编写正则表达式。

来自:

删除与图案不匹配的所有线条

:g//d

当然,您可以替换结尾处的
d
,而不是从以下位置删除行…

删除与图案不匹配的所有线条

:g//d


当然,您可以替换结尾处的
d
来执行除删除行以外的操作…

要匹配不以abc结尾的行,您可以用两种方式编写表达式。我最喜欢的是魔术

/\v.*(abc)@!/
而且没有什么魔力:

/.*\(abc\)\@!/
我建议您花些时间阅读:

:help magic

要匹配不以abc结尾的行,可以用两种方式编写表达式。我最喜欢的是魔术

/\v.*(abc)@!/
而且没有什么魔力:

/.*\(abc\)\@!/
我建议您花些时间阅读:

:help magic

您似乎熟悉Perl正则表达式。您可能会对
:help perl patterns
感兴趣,在这里您可以为常见的perl正则表达式模式提供Vim等价物。在这里,您可以看到,对于零宽度负前瞻,您需要
\@


有关其他零宽度模式,包括一些未在
:help perl模式中列出的模式,请参见
:help/\@=
和以下内容。同样有用的还有
\zs
\ze
,它们在许多情况下可以避免一些更复杂的零宽度匹配。

您似乎熟悉Perl正则表达式。您可能会对
:help perl patterns
感兴趣,在这里您可以为常见的perl正则表达式模式提供Vim等价物。在这里,您可以看到,对于零宽度负前瞻,您需要
\@

有关其他零宽度模式,包括一些未在
:help perl模式中列出的模式,请参见
:help/\@=
和以下内容。同样有用的还有
\zs
\ze
,它们在许多情况下可以避免一些更复杂的零宽度匹配