假设我有一些代码,
struct NodeVector {
vector<bool_node*> *vec;
};
我想替换两件事,比如这个,
:'<,'>s/NodeVector/MyClass/g | s/bool_node/MyEltClass/g
但是,它只运行第一次搜索,然后说“找不到模式:bool_node
”。我怎样才能达到这个效果? (插件答案还可以)。
struct MyClass {
vector<MyEltClass*> *vec;
};
答案 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兼容性选项)中,默认情况下不是