Vim中为指定文件类型设置配色方案失效问题排查
解决Vim中Tintin文件类型配色方案不生效的问题
嘿,我知道这个问题的症结所在——你遇到的情况是因为Vim autocmd事件名的大小写敏感,以及配置写法的小疏漏。咱们来一步步修复:
问题核心原因
你写的autocmd filetype tintin :colorscheme troff里的事件名filetype是全小写的,但Vim的autocmd事件名是严格大小写敏感的,正确的事件名应该是FileType(首字母大写)。这直接导致针对tintin的配色autocmd根本没有被触发!
那为什么troff文件的配色生效了?大概率是因为troff是Vim自带的默认文件类型,当你打开.tr文件时,Vim自动识别后触发了正确的FileType事件,而你可能之前通过其他方式(比如系统vimrc)设置过troff的配色,或者巧合下第一个autocmd意外生效,但本质上你的写法是不规范的。
修复后的配置方案
我建议你把配置改成下面这样,不仅修复事件名的问题,还通过augroup避免重复加载vimrc时重复绑定autocmd,这也是Vim写autocmd的最佳实践:
" 定义专属的augroup,防止重复绑定autocmd augroup FileTypeColors autocmd! " 清空之前同名组内的旧autocmd " 为troff和tintin文件类型统一设置配色 autocmd FileType troff,tintin colorscheme troff " 绑定自定义文件类型关联 autocmd BufNewFile,BufRead *.tt set filetype=tintin autocmd BufNewFile,BufRead *.tr set filetype=troff augroup END
额外优化说明
- 把同配置的文件类型用逗号分隔合并到一个autocmd里,让配置更简洁
- 去掉命令前的冒号(
:colorscheme改成colorscheme),autocmd内的命令不需要开头冒号,这是更规范的写法 augroup加autocmd!可以避免每次加载vimrc时重复绑定相同命令,防止出现多次执行的异常
你试试这个配置,打开.tt文件时应该就能正确应用troff配色方案了!
内容的提问来源于stack exchange,提问作者pjfichet
相关产品推荐
相关产品推荐

