启用Vim拼写检查时如何消除“找不到词表”警告?
解决Vim拼写检查缺失词表的警告问题
为什么你之前的配置无效
loaded_spellfile_plugin = 1 只是禁用了自动下载词表的插件,但Vim仍会触发SpellFileMissing事件并弹出警告;eventignore+=SpellFileMissing在部分Vim版本中对该事件无效,或是因为配置加载顺序问题没生效。
方案1:动态启用系统存在的词表(根源解决)
不用编写复杂插件,直接在配置中加入一段简单的Vimscript,自动检测目标语言的词表是否存在,仅启用可用的语言:
" 定义你需要支持的语言列表 let desired_langs = ['en', 'pl'] let available_langs = [] for lang in desired_langs " 检查对应词表文件是否存在(适配不同编码的词表文件) if glob(&spellpath . '/' . lang . '.utf-8.spl') != '' || glob(&spellpath . '/' . lang . '.spl') != '' call add(available_langs, lang) endif endfor " 启用拼写检查并设置有效的语言列表 if !empty(available_langs) execute 'set spelllang=' . join(available_langs, ',') set spell endif
这个方法会自动过滤系统缺失的语言,从根源避免警告弹窗,同时保持统一配置。
方案2:直接抑制警告弹窗(快速临时解决)
如果不想修改太多配置,直接捕获SpellFileMissing事件并关闭警告窗口:
autocmd SpellFileMissing * call feedkeys("\<Esc>")
或者用更优雅的方式,静默处理词表加载:
autocmd SpellFileMissing * silent! call spell#LoadAllCurrent()
这个方法不会改变启用的语言列表,但会自动关闭缺失词表的警告弹窗。
内容的提问来源于stack exchange,提问作者e-pirate
相关产品推荐
相关产品推荐

