2016-12-15 6 views
0

Возможно ли заменить раздел в результатах поиска? например, у меня в настоящее времяЗаменить одно слово в результатах поиска vim

<stringProp name="Argument.name">revision_no</stringProp> <stringProp name="Argument.value">1</stringProp>

Я хочу, чтобы заменить номер (1) с $ {вар} на 2-й линии, а вся другая информация остается такой же.

Если я печатаю

:%s/revision_no<.*\n.*value">[0-9]\*/revision_no<(all the characters...) value">${var}/g 

я мог бы потерять все формат (отступы привлеченного) ..

Так мне интересно, если есть способ просто заменить «1» с $ {вар} во всем результате поиска. `

ответ

4

другой соответствующий текст (который вы хотите сохранить), а затем укажите этот точный текст в замене. \(...\) - группа захвата (:help /\(), и \1 ссылается на нее (первая такая группа) на замену. Это традиционный способ, и он также работает в sed и многих других инструментах регулярных выражения на основе:

:%s/\(revision_no<.*\n.*value">\)[0-9]\+/\1${var}/g 

В качестве альтернативы, в Vim, вы можете утверждать, что некоторые вещи окружающих спичек фактически не включая его в матче. Это "резка" осуществляется через \zs (начало матча здесь) и \ze (конец матча здесь):

:%s/revision_no<.*\n.*value">\zs[0-9]\+/${var}/g 
+0

Спасибо! Вы, кажется, новичок в Vim. Узнайте, как искать команды и перемещаться по встроенной ': help'; он является всеобъемлющим и предлагает множество советов. Вы не будете изучать Vim так же быстро, как другие редакторы, но если вы посвятите себя непрерывному обучению, это окажется очень мощным и эффективным редактором. –

Смежные вопросы