如何在Vim中获取函数调用的文件及行号信息?
在Vim中获取函数调用的文件及行号
完全可行,Vim内置了类似Python inspect 模块的功能,通过 debugstack() 函数可以获取调用栈信息,进而拿到调用函数的文件和行号。
实现示例
对应你给出的Python示例,用Vimscript实现的代码如下:
function! myfunction(message) " 获取完整调用栈 let stack_frames = debugstack() " 栈的第1个元素是调用当前函数的上下文(第0个是函数自身的栈帧) let caller_frame = stack_frames[1] " 格式化输出调用信息 let output = printf("%s:%d - %s", caller_frame.filename, caller_frame.lnum, a:message) echo output endfunction
关键说明
debugstack()返回一个列表,每个元素是代表栈帧的字典,包含filename(调用所在文件路径)、lnum(行号)、func(调用处的函数名,若有的话)等字段。- 如果直接在Vim命令行执行
:call myfunction("test"),filename会显示为<Cmdline>,行号为1,符合命令行调用的上下文。 - 若在Vim脚本文件(比如
.vimrc或自定义.vim文件)中调用该函数,会正确显示对应的脚本文件路径和调用行号。
内容的提问来源于stack exchange,提问作者Reman
相关产品推荐
相关产品推荐

