TL; DR
当我有兴趣修复实际问题而不仅仅是删除坏插件时,如何找到vim或nvim错误的确切位置(哪个文件?)?什么比strace和guesswork更好找到错误来源?
问题
我经常在我的vim或nvim配置中添加一个插件,并最终在钩子上获得错误(缓冲区打开,关闭,写入):
"test.py" [New] 0L,0C written Error detected while processing function 343[12]..272: line 8: E716: Key not present in Dictionary: _exec E116: Invalid arguments for function get(a:args,'exec',a:1['_exec']) E15: Invalid expression: get(a:args,a:1['_exec'])
解决方法
在某个地方,你有一个插件定义了一个带匿名函数的字典(检查与这个标签相关的帮助).
对于好奇的人来说,就是这样做的:
let d = {} function! d.whatever() abort throw "blah" endfunction
执行此功能时,您将收到当前正在观察的错误.这就是为什么我停止这种方式更喜欢:
let d = {} function s:whatever() abort throw "blah" endfunction let d.whatever = function('s:whatever') " a workaround is required for older versions of vim " At least this way I'll get a `<SNR>42_whatever` in the exception throwpoint,and thus a scriptname.
这就是原因.现在,回到你的问题,AFAIK,你唯一能够知道的就是被调用的两个函数:
>在函数{343}的第12行中,你已经调用了
>:function {272},其中包含第8行的错误.
感谢这两个命令(可能带有前缀:详细,我不记得确切),你将获得这两个函数的源代码,你应该可以使用这些函数来grep你的插件知道它在哪里出现.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。