В vim я пытаюсь выполнить операцию поиска и замены с использованием обратных ссылок и регулярных выражений. Интересно, что он распознает шаблон только в том случае, если я выполняю чистый поиск, но если я выполняю поиск и заменяю его, выдается ошибка E486: шаблон не найден.
У меня есть куча вызовов функций вида:
function( Nullable< double >(1.1), map[FOO] );
Где FOO - это имя переменной в каждой строке. Я хочу превратить это в
function( othermap[ FOO ], map[FOO] );
Если я попытаюсь
:%s/Null.*\(map[\)\(.*\)\]/othermap[ \2 \], \1\2\]/g
Это дает мне "Ошибка шаблона не найдена". Даже
:%s/Null.*\(map[\)\(.*\)\]//g
не будет работать, потому что он просто не распознает шаблон. Но если я попробую следующую команду с точно таким же регулярным выражением поиска:
/Null.*\(map[\)\(.*\)\]
Подсвечивается правильно. После чего я могу сделать% s // othermap [\ 2], \ 1 \ 2], чтобы выполнить замену. Так что я все-таки смог сделать свою замену, но я не могу понять, почему шаблон распознается в одном случае, а не в другом.