Vim - функция вызова внутри выражения "replace"
Я понимаю, что вы можете вызвать функцию в операции поиска/замены vim. Например:
%s/regex/\=localtime()/g
заменит все, что соответствует "regex" с текущим временем эпохи. Проблема в том, что я не могу добавить ничего другого в выражение "replace". Например:
%s/regex/epoch: \=localtime()/g
больше не обрабатывает "localtime" как функцию. Скорее, он просто печатает "epoch: = localtime()" в виде строки в заменяющем тексте. Цель состоит в том, чтобы вместо этого напечатать "эпоху: 1353085984".
Есть ли способ вызвать функцию из произвольного раздела замещающего выражения?
Ответы
Ответ 1
Как только вы используете выражение replace, это должна быть полная замена. Вы можете использовать конкатенацию String в вашем выражении (и ссылаться на захваченные элементы через submatch(1)
вместо \1
), например:
:%s/regex/\='epoch: ' . localtime()/g