2012-02-27 9 views
4

私はこのような二つのこと、vim - ビジュアルブロックに対して複数の検索と置換操作を実行する方法は?

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

を交換したいが、それだけで最初の検索を実行した後、「パターンが見つからないと言う

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

、私はいくつかのコードがあるとします。bool_nodeを"どうすればこの結果を達成できますか? (プラグインの回答は大丈夫です)。

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

答えて

4

ここでの問題は、検索の両方が&の置換コマンドに範囲が必要であるということです。例えば、これらは正常に動作する必要があります:

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

または

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

ええ、私はファイル全体でそれをしたくない... – gatoatigrado

+0

いずれにしてもうまくいきます。編集を参照してください。 –

+0

はい、ありがとうございます。 – gatoatigrado

1

vim扱い|(バー)は異なる:globalコマンドの後に、あなたがこれを行うことができるように:デフォルトのセットアップでは

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

と異なります。しかし、解析が行われる順序は、 '|'が 'g 'のコマンド引数の一部になるようにします – sehe

1

をそれを短くすることができます:

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

*は、それがデフォルト

によるものである cpoptionsVI互換性オプション)でない限り :'<,'>


と同義である:*、通常からです

関連する問題