Подтвердить что ты не робот

Vim - функция вызова внутри выражения "replace"

Я понимаю, что вы можете вызвать функцию в операции поиска/замены vim. Например:

%s/regex/\=localtime()/g

заменит все, что соответствует "regex" с текущим временем эпохи. Проблема в том, что я не могу добавить ничего другого в выражение "replace". Например:

%s/regex/epoch: \=localtime()/g

больше не обрабатывает "localtime" как функцию. Скорее, он просто печатает "epoch: = localtime()" в виде строки в заменяющем тексте. Цель состоит в том, чтобы вместо этого напечатать "эпоху: 1353085984".

Есть ли способ вызвать функцию из произвольного раздела замещающего выражения?

4b9b3361

Ответ 1

Как только вы используете выражение replace, это должна быть полная замена. Вы можете использовать конкатенацию String в вашем выражении (и ссылаться на захваченные элементы через submatch(1) вместо \1), например:

:%s/regex/\='epoch: ' . localtime()/g