vim - 如何在可视块上执行多个搜索和替换操作?

时间:2012-02-27 01:06:02

标签: vim replace

假设我有一些代码,

struct NodeVector {
    vector<bool_node*> *vec;
};

我想替换两件事,比如这个,

:'<,'>s/NodeVector/MyClass/g | s/bool_node/MyEltClass/g

但是,它只运行第一次搜索,然后说“找不到模式:bool_node”。我怎样才能达到这个效果? (插件答案还可以)。

struct MyClass {
    vector<MyEltClass*> *vec;
};

3 个答案:

答案 0 :(得分:4)

这里的问题是搜索和搜索替换命令需要一个范围。例如,这些应该可以正常工作:

:'<,'>s/NodeVector/MyClass/g | '<,'>s/bool_node/MyEltClass/g

:%s/NodeVector/MyClass/g | %s/bool_node/MyEltClass/g

答案 1 :(得分:1)

vim|命令后以不同方式对待:global(条形码),因此您可以执行此操作:

:'<,'>g/^/s/NodeVector/MyClass/g | s/bool_node/MyEltClass/g

答案 2 :(得分:1)

在默认设置中,您可以缩短它:

:*s/NodeVector/MyClass/g | *s/bool_node/MyEltClass/g

这是因为,通常 1 :*:'<,'>的同义词


1 ,除非*位于cpoptions vi兼容性选项)中,默认情况下不是