当前位置:  开发笔记 > 开发工具 > 正文

Vim:如何从搜索中排除整个单词?

如何解决《Vim:如何从搜索中排除整个单词?》经验,为你挑选了2个好方法。

非常基本的问题,我正在尝试在Vim中编写一个正则表达式来匹配任何短语,"abc "然后直接跟着除了之外的任何其他短语"defg".

我习惯于"[^defg]"匹配除d,e,f或g之外的任何单个字符.

我的第一直觉是尝试/abc [^\(defg\)]或者/abc [^\]两者都没有.



1> bmdhacks..:

这是搜索字符串.

/abc \(defg\)\@!

您正在寻找的概念称为负面预测断言.在vim中尝试这个以获取更多信息:

:help \@!



2> rampion..:

之前或之后?

如果以'abc'开头的任何东西都没有(立即)后跟'defg',那么你需要bmdhacks的解决方案.

如果以"abc"开头的任何东西都没有(立即)以'defg'开头,那么你需要一个负面的后视:

/\%(defg\)\@

这将匹配任何'abc'的出现,只要它不是'defgabc'的一部分.有关:help \@详细信息,请参阅

如果你想匹配'abc',只要它不是'defg.*abc'的一部分,那么只需添加一个.*:

/\%(defg.*\)\@

仅在'defg'未发生的行上匹配'abc'是类似的:

/\%(defg.*\)\@

虽然,如果您只是为了替换这样做,您可以通过组合:v//和使这更容易:s//

:%v/defg/s/abc //g

这将在所有不包含'defg'的行上用''代替'abc'.了解:help :v更多.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有