我有下面的autocmd来定义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空间时,下面是它输出的内容:
call LogOutput('', "DEBUG", {'line': expand('<sflnum>'), 'func': expand('/Users/david/.vim/vimrc')[9:]})因此,似乎不是展开sflnum (这是我想要的,但确实是展开sfile )。我怎样才能使缩写/autocmd不再扩展它呢?
发布于 2020-06-15 05:43:06
来自:h :autocmd
注意,在定义自动命令时,":autocmd“参数中的特殊字符(例如"%”、"")不会展开。当事件被识别并执行{cmd}时,这些值将被展开。唯一的例外是在定义自动The时展开"
<sfile>“。
停止不必要的扩展,利用<lt>,例如"\<lt>sfile>"
https://stackoverflow.com/questions/62380889
复制相似问题