У меня есть следующее в моем vimrc:
func! AddSpaceBeforeEqual()
s/\([a-z)_0-9"'\[\]]\)=/\1 =/ge
endfunc
Я использую vint для lint мой vimrc, и получил следующее предупреждение:
ProhibitCommandWithUnintendedSideEffect Избегайте команд с непреднамеренными побочными эффектами. Избегайте использования: s [ubstitute], поскольку он перемещает курсор и печатает сообщения об ошибках. Предпочитают функции (такие как search ()), лучше подходящие для скриптов. Для многих команд vim существуют функции, которые делают то же самое с меньшим количеством побочных эффектов. Смотрите: help functions () для списка встроенных функций. Руководство по стилю Google Vimscript
Однако я не думаю, что это способ сделать замену без использования :s
команды.
Например, search()
функция выдает строки, соответствующие шаблону, но нет способа сделать замену. substitute()
Функция работает на шнурке, и не подменять на весь файл.
Должен ли я сам реализовать метод замены или это более разумный способ переписать мою функцию?
:help function-search-undo