如何用Vim中的函数结果替换字符串?

Nek*_*eka 3 vim

我想在文件的某些位置插入文件名和行号.例如这一行:

_debug('init');
Run Code Online (Sandbox Code Playgroud)

我想替换

:s/debug('/debug('(%current_filename_here%:%current_line_number_here%)\ /g
Run Code Online (Sandbox Code Playgroud)

得到这个

_debug('(filename.ext:88) init');
Run Code Online (Sandbox Code Playgroud)

我尝试使用expand('%:t')获取文件名和line(".")来获取行号,但我不知道如何在替换表达式中使用它.

我怎样才能做到这一点?

kev*_*kev 8

你可以用\=.例如:

:s@_debug('\zs@\=printf('(%s:%d) ', expand('%:t'), line('.'))@
Run Code Online (Sandbox Code Playgroud)

当{replacement}开始时,"\="它被评估为表达式,