如何在“vim”和“nvim”中调试“处理函数时出错”?

如何在“vim”和“nvim”中调试“处理函数时出错”?

长话短说

当我有兴趣解决实际问题而不仅仅是删除坏插件时,如何找到错误开始的确切位置vim(哪个文件?)?nvim还有什么比strace通过猜测更好地找到错误根源呢?

问题

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

问题是,我不知道它们来自哪里,我只得到一些未知文件的行号,它不是我的vim/ nvimconfig 文件。

答案1

这个特定的插件是以面向对象的风格编写的。指343[12]..272的是 a 中的匿名(编号)函数字典对象

如果您知道(最近安装的)插件,则可以使用:breakadd file */pluginname.vim文件中的文件~/.vimrc来停止,然后:next逐行单步执行(使用 )。

或者,您可以使用 捕获 Vim 会话的完整日志vim -V20vimlog。退出 Vim 后,检查vimlog日志文件中是否有错误消息和之前的可疑命令。

相关内容