Vim искать и заменять, чтобы изменить строку с общей структурой, но разными словами

Это означает, что наиболее переносимым способом определения реализации методов классов шаблонов является определение их внутри определения класса шаблона.

template < typename ... >
class MyClass
{

    int myMethod()
    {
       // Not just declaration. Add method implementation here
    }
};
0
задан Gabriel Kay 13 July 2018 в 17:36
поделиться

1 ответ

nb: Я предполагаю, что «слово» - это любая последовательность символов, отличных от символа двойного символа. Измените по мере необходимости.

:%s/SetTag("\([^"]*\)")/SetTag("\1" + __LINE__)/

экранированные скобки захватывают суб-совпадение; \ 1 в заменяющей строке заменяется на это соответствие.

1
ответ дан L. Scott Johnson 17 August 2018 в 12:20
поделиться
  • 1
    Вы правы, что слова «слова» у меня есть буквы и not двухзначные символы, но это не сработало для меня. Это дает мне Pattern not found: SetTag("\([^"]*\)") «Слово» варьируется между многими различными категориями тегов. Посредством «Модифицировать по мере необходимости». вы имеете в виду, что мне нужно вводить каждое слово в отдельности или оно будет ловить все слова? (Я ищу все, чтобы поймать.) Для справки это точная команда, которую я выполнил %s/SetTag("\([^"]*\)")/SetTag("\1 line: " + std::to_string(__LINE__)/ – Gabriel Kay 13 July 2018 в 19:12
  • 2
    Измененная часть была именно тем, что составляет слово. В моем случае я использовал [^"]* для выбора любой строки из нуля или более символов без двоичного кода. Часть внутри \(...\) - это слово, а остальное - точный окружающий текст. – L. Scott Johnson 13 July 2018 в 19:16
  • 3
    Если это не соответствует, попробуйте просто найти его с помощью /, чтобы увидеть, какие части совпадают, и когда он перестает соответствовать. Возможно, в вашем целевом тексте есть лишнее пространство или что-то еще. – L. Scott Johnson 13 July 2018 в 19:17
  • 4
    Ах, я вижу, что сломал команду, над которой я бежал, была закрытой круглой скобкой, когда мне она не нужна. Отлично, отлично! – Gabriel Kay 13 July 2018 в 19:19