在Vim中,/(在正常模式下搜索)和搜索功能返回不同的结果

时间:2015-01-01 12:34:50

标签: regex vim

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

blah.
[{}]
[{foo}]

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

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

当我使用普通搜索时

/\[{.*}\]

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

但是如果我使用search函数

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

光标移至第一行的最后.echo的结果为1,表示第一个匹配位于第1行。

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

感谢。

1 个答案:

答案 0 :(得分:3)

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

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

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

这可以在以下帮助中解释:h expr-quote