我有以下autocmd在vim中定义log
的缩写:
autocmd FileType vim,filetype_vim iabbrev <buffer> log
\ call LogOutput('', "DEBUG", {'line': expand('<sflnum>'), 'func': expand('<sfile>')[9:]})
当我输入log
时,我希望它准确输入:
call LogOutput('', "DEBUG", {'line': expand('<sflnum>'), 'func': expand('<sfile>')[9:]})
这被发送到日志功能,因此<sflnum>
和<sfile>
由进行日志调用的位置确定。
但是,当我在vim中输入log
[space]时,其输出如下:
call LogOutput('', "DEBUG", {'line': expand('<sflnum>'), 'func': expand('/Users/david/.vim/vimrc')[9:]})
因此,似乎不展开sflnum
(这是我想要的,但是确实展开了sfile
。如何我做到了,这样abbrev / autocmd永远不会扩展它?
答案 0 :(得分:1)
来自:h :autocmd
请注意,“:autocmd”中的特殊字符(例如“%”,“”) 定义自动命令时,不会扩展参数。这些将是 在识别到事件并执行{cmd}时展开。唯一的 例外是定义autocmd时会展开“
<sfile>
”。
要停止不必要的扩展,请使用<lt>
,例如"\<lt>sfile>"