vim:使用perl兼容的正则表达式进行交互式搜索和替换

时间:2015-09-07 08:30:05

标签: perl vim replace

根据this page,您可以使用perl兼容的正则表达式

:perldo s/pattern/insert/g

这很好用。

但是,如何在vim中使用交互式搜索并替换为PCRE语法?

由于这不适用于perldo,我会搜索不同的解决方案。

3 个答案:

答案 0 :(得分:1)

你可以得到的最接近的是:

select t.member, t.drug_id, t2.drug_id,
       sum(datediff(day, (case when t.dos <= t2.dos then t2.dos else t.dos end),
                    (case when dateadd(day, t.days_supply, t.dos) <= dateadd(day, t2.days_supply, t2.dos)
                          then dateadd(day, t.days_supply, t.dos)
                          else dateadd(day, t2.days_supply, t2.dos)
                     end)
           ) as days_overlap
from table t join
     table t2
     on t.member = t2.member and t.drug_id < t2.drug_id and
        t.dos between dateadd(day, -t.days_supply, t2.dos) and
                      dateadd(day, t2.days_supply, t2.dos)
group by t.member, t.drug_id, t2.drug_id;

答案 1 :(得分:0)

在您的示例中,s/pattern/insert/g是perl命令,而不是使用perl兼容的正则表达式语法的Vim命令。

如果perl没有等效的Vim /c标志,你需要找到一个替代方法,如...编写一个实际的perl脚本。

答案 2 :(得分:0)

我建议尝试eregex plugin。它将perl兼容的正则表达式映射到VIM正则表达式语法。