У мене є файл із купою стандартних налаштувань користувача. Я хочу змінити частину тексту, але я намагаюся придумати відповідник і замінувач. Використовуючи наступний приклад:
###############################################################################
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
###############################################################################
# Trackpad: enable tap to click for this user and for the login screen
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
Я б хотів замінити # Trackpad: ...
наrunning "Trackpad: ..."
Вирішуючи проблему, я придумав щось за допомогою тестера регулярних виразів:
/\n\n#\s(.*)/g
Якщо я спробую використовувати це у Vim, це не працює для мене:
:/\n\n#\s(.*)/running "\1"/g
Я думаю, моя проблема зводиться до двох конкретних питань:
- Як я можу уникнути пошуку
\n
символів і замість цього переконатися, що#
вони не відображаються в кінці групи пошуку? - Як я можу ефективно використовувати групи захоплення?
Нижче наведено кілька чудових відповідей. Важко вибрати між усіма трьома, проте я вважаю, що обрана відповідь є найбільш точною для моєї оригінальної специфікації. Рекомендую спробувати всі три відповіді з фактичним файлом, щоб побачити, як ви ставитесь до них.
:%s/\v\n\n#\s+(.*)/^M^Mrunning "\1"/
(додав "чарівний" прапор). Дійсно важко вибрати правильну відповідь на моє первісне запитання, але я вважаю, що ця відповідь є найближчим до моєї оригінальної очікуваної відповіді. Це також єдиний, який працює у всьому файлі без необхідності вибору діапазону.