问题
vim 中不能使用 .*?。
解法
可使用 .\{-},代替 .*,实现非贪婪匹配。
详细说明
输入 :help non-greedy,可以看到如下帮助文档:
non-greedy
If a "-" appears immediately after the "{", then a shortest match
first algorithm is used (see example below). In particular, "\{-}" is
the same as "*" but uses the shortest match first algorithm. BUT: A
match that starts earlier is preferred over a shorter match: "a\{-}b"
matches "aaab" in "xaaab".
Example matches
ab\{2,3}c "abbc" or "abbbc"
a\{5} "aaaaa"
ab\{2,}c "abbc", "abbbc", "abbbbc", etc.
ab\{,3}c "ac", "abc", "abbc" or "abbbc"
a[bc]\{3}d "abbbd", "abbcd", "acbcd", "acccd", etc.
a\(bc\)\{1,2}d "abcd" or "abcbcd"
a[bc]\{-}[cd] "abc" in "abcd"
a[bc]*[cd] "abcd" in "abcd"
The } may optionally be preceded with a backslash: \{n,m\}.
注意:实测,/\v 开头进行查找时,无法使用非贪婪模式。应该只使用 /。
参考链接:
https://stackoverflow.com/questions/1305853/how-can-i-make-my-match-non-greedy-in-vim
