在 Vim 中,/(在普通模式下搜索)和搜索函数 returns 不同的结果

In Vim, / (search in normal mode) and search function returns different results

我有一个简单的文本文件。

blah.
[{}]
[{foo}]

我的光标在文件的开头。我想搜索包含 [{}] 的(可能为空的)字符串。

所以正则表达式模式是 "\[{.*}\]",对吗?

当我使用普通搜索时

/\[{.*}\]

光标重新定位到第二行,好!

但是如果我使用 search 函数

:echo search("\[{.*}\]")

光标移动到第一行的最后.echo的结果为1,表示第一个匹配在第1行。

为什么以及如何使用函数获得与普通搜索相同的结果?

谢谢。

(我在下面复制我对 vim_use 邮件列表的回答:)

您在第一个搜索参数中使用了双引号。反斜杠 在双引号中有一个特殊的含义,基本上只是意味着 使用它后面的字符。在您的情况下,搜索功能会看到它 第一个参数模式 [{.*}] 正好匹配最后一个 第 1 列。

解决方法是,要么使用单引号,要么转义字符 两次,如果你使用双引号。

这在 :h expr-quote

的帮助中有解释