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