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

  • 本文关键字:一行 搜索 模式 Vim vim
  • 更新时间 :
  • 英文 :


我正在尝试练习 ex 命令的搜索模式,并尝试使用它们做我通常会用宏做的事情,但我被一个我不确定是否可能的事情卡住了。

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

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

我正在尝试使用此命令(在函数后面使用光标)拉动它:

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

这按预期工作,并与我在那里提到的功能相匹配。

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

有谁知道如何做到这一点?谢谢!

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

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

要像下面这样插入回车符(Enter),请使用Ctrl-v Enter

:normal ?public^Mjwyiw

解释

:normal  ............ in normal mode
?public ............. search backward for public
^M .................. Enter
j ................... move to the line below
yiw ................. yank inner word

最新更新