Vim报错E716:字典中无对应键的解决方案咨询
错误信息
Error detected while processing function
35_debounceTimeTimerCallback[1].. 35_tapSourceCallback[4].. 35_tapSourceCallback[1].. 30[1].. 55_set_signs[10].. 55_place_signs:
line 5:
E716: Key not present in Dictionary: linecount + 1
排查与解决步骤
更新插件到最新版本
这个错误大概率是插件旧版本的bug,执行Vim命令更新插件::PlugUpdate更新完成后重启Vim,看错误是否消失。
确认Go语言LSP服务(gopls)已正确安装
vim-lsp-settings依赖对应语言的LSP服务才能正常工作,安装gopls:go install golang.org/x/tools/gopls@latest安装完成后,执行
gopls version验证服务是否可用。排查插件冲突
临时注释掉.vimrc中的Plug 'mattn/vim-lsp-settings',保存后重启Vim:call plug#begin('~/.vim/plugged') Plug 'prabirshrestha/vim-lsp' " Plug 'mattn/vim-lsp-settings' call plug#end()如果错误不再出现,说明问题出在vim-lsp-settings插件,可以改用手动配置LSP:
在.vimrc中添加gopls的手动配置:call plug#begin('~/.vim/plugged') Plug 'prabirshrestha/vim-lsp' call plug#end() au User lsp_setup call lsp#register_server({ \ 'name': 'gopls', \ 'cmd': {server_info->['gopls']}, \ 'allowlist': ['go'], \ })检查Vim版本兼容性
vim-lsp要求Vim版本至少为8.1,执行:version查看当前版本,若版本过低则升级到最新稳定版。清理插件缓存与临时文件
若以上步骤无效,删除插件目录重新安装:rm -rf ~/.vim/plugged重启Vim后执行
:PlugInstall重新安装插件,同时可清除Vim的临时文件(如*.swp、*.undo等)。
内容的提问来源于stack exchange,提问作者Yoshitaka

