Neovim中ftplugin配置markdown文件关闭语法高亮不生效如何解决
根因分析
配置不生效是加载顺序冲突导致的:Neovim 加载文件类型相关配置的默认顺序为 ftplugin/*.vim → syntax/*.vim,你在 ftplugin 中关闭了语法高亮后,后续加载的系统默认 markdown 语法文件会重新启用 syntax 配置,导致你的规则被覆盖。手动执行 setlocal syntax=off 能生效,是因为手动操作发生在所有默认配置加载完成之后,不会再被覆盖。
可行解决方案
- 方案1:将 syntax 关闭配置移动到 after 目录(最稳妥)
after 目录下的配置会在所有默认配置加载完成后执行,不会被系统规则覆盖。
创建文件~/.config/nvim/after/ftplugin/markdown.vim,添加如下内容即可,原有ftplugin/markdown.vim中的其余配置不需要改动:
setlocal syntax=off
如果需要对普通文本文件也生效,同步创建 ~/.config/nvim/after/ftplugin/text.vim 添加相同配置即可。
- 方案2:通过 autocmd 明确指定优先级
如果不想拆分配置,可以直接在init.vim中添加如下 autocmd 规则,优先级高于默认的语法加载逻辑:
autocmd FileType markdown,text setlocal syntax=off spell spelllang=en
- 方案3:不关闭语法高亮的替代方案
如果只是要解决拼写高亮被语法高亮覆盖的问题,不需要完全关闭语法高亮,只需要调高拼写相关高亮组的显示优先级即可,在init.vim中添加如下配置:
" 自定义拼写错误高亮样式,优先级高于普通语法高亮 hi SpellBad cterm=underline gui=underline ctermfg=1 guifg=#ff0000 hi SpellCap cterm=underline gui=underline ctermfg=3 guifg=#ffff00
验证方法
配置完成后打开任意 markdown 文件,执行命令 :set syntax?,如果输出为 syntax= 就说明语法关闭配置已生效,拼写错误的高亮也会正常显示。
内容的提问来源于stack exchange,提问作者Justin Jung
相关产品推荐
相关产品推荐

