Vim正则表达式在同一行上匹配多个结果

时间:2016-10-11 13:13:31

标签: regex vim

我正在开发一个项目,我将二叉树的实现转换为AVL树,所以我有一些文件包含如下行:

Tree<int>* p = new Tree<int>(*t);
到处都是。我想到的目标是使用vim正则表达式将字符串Tree的所有实例转换为字符串AVLTree,因此上面的行将成为:

AVLTree<int>* p = new AVLTree<int>(*t);

我尝试的正则表达式是:%s/Tree/AVLTree/g,但结果是:

AVLTree<int>* p = new Tree<int>(*t);

我向我看,就像当vim在一条线上找到要替换的东西时,它会跳到下一条线,那么有没有办法在同一条线上匹配多个字符串?我意识到这可以用多个正则表达式完成,所以我的问题主要是学术性的。

1 个答案:

答案 0 :(得分:2)

对此人的信任归于Marth指出这一点。我的问题出在vim的gdefault上。默认情况下,它设置为“关闭”,这意味着您需要/ g标记才能使搜索成为全局,这就是我想要的。我认为我的设置是&#39; on&#39;,这意味着没有标签,搜索是全局的,但是标签搜索不是。我发现这张图表来自:help 'gdefault'有用:

            command         'gdefault' on   'gdefault' off 
            :s///             subst. all      subst. one
            :s///g            subst. one      subst. all
            :s///gg           subst. all      subst. one