gpt4 book ai didi

vim - 获取Vim脚本的

转载 作者:行者123 更新时间:2023-12-03 20:55:02 26 4
gpt4 key购买 nike

我想在源Vim脚本中调用用script-scope(s:)声明的函数,而不用对%d中的call <SNR>%d_function()进行硬编码或通过修改插件文件本身将其暴露给全局命名空间。如何以编程方式检索其父脚本的<SNR>或脚本编号?

最佳答案

您可以通过分析<SNR>的输出来检索脚本的:scriptnames。下面的函数将针对脚本的完整文件名或其一部分(只要它唯一地标识了您想要的文件名)就可以做到这一点。

func! GetScriptNumber(script_name)
" Return the <SNR> of a script.
"
" Args:
" script_name : (str) The name of a sourced script.
"
" Return:
" (int) The <SNR> of the script; if the script isn't found, -1.

redir => scriptnames
silent! scriptnames
redir END

for script in split(l:scriptnames, "\n")
if l:script =~ a:script_name
return str2nr(split(l:script, ":")[0])
endif
endfor

return -1
endfunc

例如,如果需要在名为 foo的脚本中调用用 s:定义的函数 bar.vim,则可以使用:
call eval(printf("<SNR>%d_foo()", GetScriptNumber("bar.vim")))

关于vim - 获取Vim脚本的<SNR>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24027506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com