2013-07-25 2 views
1

Я пытаюсь выполнить многострочный поиск и замену, сохраняя отступ, ведущее пространство, в коде, с которым я работаю. Ниже приведен образец текста, который приближается к ситуации. Проблема, с которой я сталкиваюсь, заключается в сохранении пробела. Я надеюсь, что для не-плагина, простой раствор джана VIM через:% s/......VIM глобальный многострочный поиск и замена поддерживающего отступа

VIM 7.2 на Windows, 7 автоотступа на expandtab на

Начиная с:

apples, 
    banannas, 
    cherries, 
    plums 

    peas, 
    green beans, 
    corn, 
    squash 

     apples, 
     banannas, 
     cherries, 
     plums 

Я хотел бы добавить «груши», без двойных кавычек и после «вишни» строки в списке. Желаемый результат:

apples, 
    banannas, 
    cherries, 
    pears, 
    plums 

    peas, 
    green beans, 
    corn, 
    squash 

     apples, 
     banannas, 
     cherries, 
     pears, 
     plums 

Попытка :% S/вишни,/& \ rpears,/г урожаи ...

 apples, 
     banannas, 
     cherries, 
pears, 
     plums 

     peas, 
     green beans, 
     corn, 
     squash 

      apples, 
      banannas, 
      cherries, 
pears, 
      plums 

Попытка :% s/cherries, _s. \ s */& груши, \ r/g ...

 apples, 
     banannas, 
     cherries, 
     pears, 
plums 

     peas, 
     green beans, 
     corn, 
     squash 

      apples, 
      banannas, 
      cherries, 
      pears, 
plums 

Спасибо!

ответ

4

Вы можете воспользоваться :g и автоотступе с нормальным o:

:g/cherries,/normal opears,

3

Попробуйте извлечь пробел перед словом и вставьте его в запасную часть (\1).

ПРИМЕЧАНИЕ, что я использую \v в начале, но это ничего не совпадает, то, чтобы сделать регулярное выражение очень магии и избегать, чтобы избежать много символов, как скобки.

:%s/\v(\s*)cherries,/&\r\1pears,/g 

Это дает:

apples, 
    banannas, 
    cherries, 
    pears, 
    plums 

    peas, 
    green beans, 
    corn, 
    squash 

     apples, 
     banannas, 
     cherries, 
     pears, 
     plums 
Смежные вопросы