Vim 如何不在autocmd中展开?

Vim 如何不在autocmd中展开?,vim,Vim,我使用以下autocmd在vim中定义log缩写: autocmd FileType vim,filetype_vim iabbrev <buffer> log \ call LogOutput('', "DEBUG", {'line': expand('<sflnum>'), 'func': expand('<sfile>')[9:]}) 这将发送到日志函数,因此无论在何处执行日志调用,和都由确定 但是,当我在vim中输入日志[space]时,它

我使用以下autocmd在vim中定义
log
缩写:

autocmd FileType vim,filetype_vim     iabbrev <buffer> log 
\ call LogOutput('', "DEBUG", {'line': expand('<sflnum>'), 'func': expand('<sfile>')[9:]})
这将发送到日志函数,因此无论在何处执行日志调用,
都由确定

但是,当我在vim中输入
日志
[space]时,它的输出如下:

call LogOutput('', "DEBUG", {'line': expand('<sflnum>'), 'func': expand('/Users/david/.vim/vimrc')[9:]})
调用LogOutput(“”,“DEBUG”,{'line':expand(“”),'func':expand('/Users/david/.vim/vimrc')[9:})

因此,它似乎没有扩展
sflnum
(这是我想要的,但它确实扩展了
sfile
。我如何才能使abbrev/autocmd永远不会扩展它?

From
:h:autocmd

请注意:autocmd中的特殊字符(例如“%”、“”) 定义自动命令时不展开参数。这些参数将 在识别事件并执行{cmd}时展开 例外情况是,定义autocmd时会展开“

要停止不必要的扩展,请使用
,例如
“\sfile>”

call LogOutput('', "DEBUG", {'line': expand('<sflnum>'), 'func': expand('/Users/david/.vim/vimrc')[9:]})