我正在尝试使用Vimscript中的search()函数搜索字符串

时间:2019-09-04 04:21:48

标签: search vim pattern-matching

我的代码如下。

let l:foundtag = search("<.>")
echo l:foundtag

此代码将返回找到标签的行号。

使用上面的代码示例,我希望它返回字符串“

”(或它找到的任何其他标签)。有什么方法可以获取通过搜索找到的实际字符串,而不仅仅是使用Vimscript在其中找到的行号?

1 个答案:

答案 0 :(得分:3)

echo getline(search("<.>"))
如注释中所述,如果您只想要第一个找到的标签,则是可能的。 另外,您可以使用:

split(execute("g/<.>/p"), "\n")

但是请注意,这两个函数将返回整行。似乎您只需要标签。然后,您必须将其包装在matchstr命令中。

echo matchstr(getline(search("<.>")), "<.>")

还请注意,这只会找到带有单个字符的标签。如果要查找更长的标签,例如<div>,则必须使正则表达式适应"<\\w*>"