Vim:匹配搜索模式中的下一行/上一行

时间:2017-11-23 19:55:49

标签: vim

我试图练习我的搜索模式以获取ex命令,并尝试做一些我经常使用它们的宏,我遇到了一个我不确定是否可能。

我有一些看起来像这样的代码:

public myFunc (): any {
    return {};
}

我试图用这个命令猛拉它(用光标后面的光标):

:?\vpublic\s*\w+\s*\(.*\)\s*:\s*\w+\s*\{?;/}$/y

这符合预期,并与我在那里提到的功能相匹配。

我想做的但是没有找到方法是忽略第一行和最后一行(我只想要函数的内容)。我怀疑有可能以某种方式(可能是+/-搜索偏移?),但我还没有运气。

有谁知道怎么做?谢谢!

1 个答案:

答案 0 :(得分:2)

是的,这是添加适当的偏移:help search-offset)的简单问题。您基本上定义了一个包含两次搜索的范围(一个从当前位置向上,一个向下从那里开始):?...?;/.../。要排除目标,只需加/减1;这是通过将偏移量附加到搜索:?...?+1;/.../-1来完成的。适用于您的示例:

:?\vpublic\s*\w+\s*\(.*\)\s*:\s*\w+\s*\{?+1;/}$/-1y