如何在vim中使用非贪婪?

How to use non-greedy in vim?

输入

\sn{1}\gn{2}\gn{3}\sn{4}\sn{5}\gn{6}\gn{7}\sn{8}\yr{2012}

需要输出

\sn{1}\sn{4}\yr{2012}

我使用了这个代码。但失败了。

%s/\sn{\([^}]*\)}.*\sn{\([^}]*\)}.*\yr/\sn{}\sn{}\yr{}/gec 

vimregex 中的非贪婪算法是.\{-}:h \{- 了解详情

所以你的:s命令可以写成:

%s/\(\sn{[^}]*}\).\{-}\(\sn{[^}]*}\).\{-}\(\yr{[^}]*}\).*//g