长话短说
当我有兴趣解决实际问题而不仅仅是删除坏插件时,如何找到错误开始的确切位置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
/ nvim
config 文件。
答案1
这个特定的插件是以面向对象的风格编写的。指343[12]..272
的是 a 中的匿名(编号)函数字典对象。
如果您知道(最近安装的)插件,则可以使用:breakadd file */pluginname.vim
文件中的文件~/.vimrc
来停止,然后:next
逐行单步执行(使用 )。
或者,您可以使用 捕获 Vim 会话的完整日志vim -V20vimlog
。退出 Vim 后,检查vimlog
日志文件中是否有错误消息和之前的可疑命令。