我有一个简单的文本文件。
blah.
[{}]
[{foo}]
我的光标位于文件的开头。我想搜索(可能为空)用[{}]包含的字符串。
所以正则表达式是"\[{.*}\]"
,对吧?
当我使用普通搜索时
/\[{.*}\]
光标在第二行重新定位,好!
但是如果我使用search
函数
:echo search("\[{.*}\]")
光标移至第一行的最后.
,echo
的结果为1,表示第一个匹配位于第1行。
为什么以及如何使用函数获得与普通搜索相同的结果?
感谢。
答案 0 :(得分:3)
(我在下面回复我对vim_use邮件列表的回答:)
您在第一个搜索参数中使用双引号。反斜杠
在双引号中有一个特殊的含义,基本上只是意味着
使用后面的字符。在您的情况下,搜索功能会看到它
第一个参数模式[{.*}]
碰巧在最后一个匹配
第1行的列。
解决方案是使用单引号或转义字符 两次,如果你使用双引号。
这可以在以下帮助中解释:h expr-quote