мне нужно заменить несколько строк в PHP файл как следующее (это только пример, но он представляет собой реальную проблему):поиска VIM и заменить: строка изменения, прежде чем заменить
<?php
$errors = array(
'error_1',
'error_2',
'error_3',
'error_4',
'error_5',
);
Я хочу сделать их ассоциативный массив, никаких проблем с этим:
:%s/'\(.\+\)',/'\1' => '\1',/g
И получите следующий результат:
<?php
$errors = array(
'error_1' => 'error_1',
'error_2' => 'error_2',
'error_3' => 'error_3',
'error_4' => 'error_4',
'error_5' => 'error_5',
);
Но проблема в том, что я хочу удалить подчеркивание из значений массива (ключи должны содержать undescores), есть ли способ заменить символы подчеркивания на белые пробелы перед заменой на \ 1?
Вот вывод, что я хочу:
<?php
$errors = array(
'error_1' => 'error 1',
'error_2' => 'error 2',
'error_3' => 'error 3',
'error_4' => 'error 4',
'error_5' => 'error 5',
);
Все ли они начинаются с 'error_'? –
Вы можете использовать 'submatch', как объяснил @Marth; но сначала вы должны упростить свое исходное регулярное выражение, например, '% s/\ ('. \ +' \) \ zs,/=> \ 1,/g' – mMontu