我正在尝试练习 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