gpt4 book ai didi

debugging - 如何在 `Error while processing function` 和 `vim` 中调试 `nvim` ?

转载 作者:行者123 更新时间:2023-12-04 23:40:10 25 4
gpt4 key购买 nike

TL; 博士

如何找到确切位置 vimnvim当我有兴趣修复实际问题而不仅仅是删除坏插件时,错误开始(哪个文件?)?任何比 strace 更好的东西并猜测找出错误来源?

问题

我经常给我的 vim 添加一个插件或 nvim配置并最终在 Hook 上出错(缓冲区打开、关闭、写入):

"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, 'exec', a:1['_exec'])

问题是,我不知道那些来自哪里,只得到一些未知文件的行号,我知道这不是我的 vim/ nvim配置文件。

最佳答案

在某处,您有一个插件定义了一个带有 anonymous-functions 的字典。 (检查与此标签相关的帮助)。

对于好奇的人,它是这样完成的:

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,你唯一能知道的是被调用的两个函数:
  • :function {343} 的第 12 行,您已调用
  • :function {272}在第 8 行包含错误。

  • 多亏了这两个命令(可能以 :verbose 为前缀,我记不太清楚了),您将获得这两个函数的源代码,您应该能够使用它们来grep您的插件以知道在哪里它出现。

    关于debugging - 如何在 `Error while processing function` 和 `vim` 中调试 `nvim` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862874/

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