vim - как выполнить несколько операций поиска и замены в визуальном блоке? - PullRequest
4 голосов
/ 27 февраля 2012

Предположим, у меня есть код,

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

Я хочу заменить две вещи, например,

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

но он запускает только первый поиск и затем говорит "шаблон не найден: bool_node". Как я могу достичь этого результата? (ответы плагина в порядке).

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

Ответы [ 3 ]

4 голосов
/ 27 февраля 2012

Проблема в том, что обеим командам поиска и замены необходим диапазон. Например, они должны работать нормально:

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

или

:%s/NodeVector/MyClass/g | %s/bool_node/MyEltClass/g
1 голос
/ 27 февраля 2012

В настройках по умолчанию вы можете сократить его:

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

Это потому, что обычно 1 , :* является синонимом :'<,'>


1 , если * не находится в cpoptions ( опции совместимости vi ), что по умолчанию не

1 голос
/ 27 февраля 2012

vim обрабатывает | (бар) по-другому после команды :global, поэтому вы можете сделать это:

:'<,'>g/^/s/NodeVector/MyClass/g | s/bool_node/MyEltClass/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...