Vim中.txt文件对应的text.vim ftplugin配置的缩写与语法高亮不生效
问题原因
Vim 打开文件的配置加载顺序为:文件类型检测 → 加载 ftplugin 配置 → 加载 indent 配置 → 加载 syntax 语法配置。你在 ftplugin 中设置的 syntax=html 会被后续加载的 text 类型默认语法配置覆盖,同时全局缩写也可能被后续文件类型相关配置重置,加上你没有使用缓冲区局部属性,全局配置容易被其他文件类型的设置覆盖,也会污染非 txt 文件的编辑环境。
解决方案
步骤1:修改 ftplugin 配置
编辑 ~/mydotfiles/vim/after/ftplugin/text.vim,将所有缩写改为缓冲区局部,所有 set 命令改为 setlocal:
" 为Anki笔记插入HTML标签的缩写 iab <buffer> it <i></i><Left><Left><Left><Left> iab <buffer> bd <b></b><Left><Left><Left><Left> iab <buffer> br <br> iab <buffer> cd <code></code><Left><Left><Left><Left><Left><Left><Left> " 有序/无序列表 iab <buffer> ol <ol></ol><Left><Left><Left><Left><Left> iab <buffer> ul <ul></ul><Left><Left><Left><Left><Left> " 列表项 iab <buffer> li <li></li><Left><Left><Left><Left><Left> iab <buffer> dt <detail><summary>Read more</summary><p></p></details><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left> " 保留tab原始格式 setlocal noexpandtab
步骤2:添加语法高亮 autocmd
编辑 ~/.vim/vimrc,在 filetype plugin indent on 配置行之后添加以下内容,确保语法设置在语法配置加载完成后生效:
" 针对txt文件启用HTML语法高亮 autocmd FileType text ++after syntax setlocal syntax=html
验证方法
修改完成后重新打开 txt 文件,执行:abbr可以看到带 <buffer> 标记的自定义缩写,执行:set syntax?返回 html 就说明配置已生效。
内容的提问来源于stack exchange,提问作者sudhir h
相关产品推荐
相关产品推荐

