2016-04-26 2 views
0

Я пытаюсь заменить строки, содержащие шаблон s#_decoded_block[ с s#_decoded_block_. Команда, которую я использую для этого, - %s/s\d\+_decoded_block\\[/s\d\+_decoded_block_/g.Как заменить строку определенным шаблоном в vi?

Я ожидаю получить s#_decoded_block_ в качестве замены, но вместо этого получаю sd+_decoded_block_. Пожалуйста, дайте мне знать, что я делаю неправильно. Благодарю.

ответ

1

Проблема в том, что \d и + имеют смысл только в тексте поиска, а не в тексте замены. Если вы хотите, чтобы захватить то, что было подобрано, а затем использовать его в тексте замены, вам нужно матч группы:

%s/\(s\d+_decoded_block\)\[/\1_/ 

в этом случае я capured все, что вы хотите сохранить, чтобы не иметь перепечатывать его ,

+0

Спасибо, что работает для меня. – slin6174