Vim文件类型识别.vue 为什么没有高亮三行 autocmd 解决 90% 扩展名关联问题【免费下载链接】vim-galore:mortar_board: All things Vim!项目地址: https://gitcode.com/gh_mirrors/vi/vim-galoreVim文件类型识别决定了打开文件时的语法高亮与补全行为。这份指南带你用几行 autocmd 把自定义扩展名、多后缀文件和脚本正确挂上文件类型。读完之后你能独立处理绝大多数类型问题不再每次遇到新扩展名都去翻帮助文档。Vim认不出文件的三个典型时刻这几个时刻最磨人代码敲到一半满屏却是灰色纯文本。打开 .vue 没有高亮页面像一面灰墙每次都要手动设置一次第二天就忘。无扩展名的部署脚本第一行明明写着#!/bin/bashVim 照样拒绝着色。file.config.js 很迷惑明明是 JS 配置识别逻辑却可能只盯着结尾的.js看。⚡ 三行 autocmd filetype 配置解决 90% 的识别问题把下面的片段放进 vimrc 文件类型配置保存后对之后打开的每个文件都生效。自定义文件扩展名—— 当 Vim 把 .vue、.tsx 当纯文本时加上autocmd BufNewFile,BufRead *.vue setfiletype vue autocmd BufNewFile,BufRead *.tsx setfiletype typescriptreact多后缀文件—— 面对.config.js、.test.js 这类文件显式声明类型autocmd BufNewFile,BufRead *.config.js setfiletype javascript autocmd BufNewFile,BufRead *.test.js setfiletype javascriptShebang 行检测—— 脚本没有扩展名、只靠第一行#!交代身份时autocmd BufNewFile,BufRead * if getline(1) ~ ^#!.*bash | setfiletype sh | endif autocmd BufNewFile,BufRead * if getline(1) ~ ^#!.*python | setfiletype python | endif一条 autocmd 的结构是固定的事件、模式、命令、可选条件。BufNewFile,BufRead是事件新建和打开已有两种情况都覆盖。*.vue是文件名匹配模式命中后立即执行后面的setfiletype。两个容易踩的坑用setfiletype而不是set filetype...避免FileType事件被二次触发。规则写得越具体越好*这种万能模式只留给 Shebang 这类兜底场景。从认得出到认得准进阶嗅探扩展名给不出答案时可以直接看文件内容。比如第一行只有一个{基本可以断定是 JSONautocmd BufNewFile,BufRead * if getline(1) ~ ^\s*{ | setfiletype json | endif只有某个项目目录存在奇怪扩展名时把规则限定在目录内别污染全局autocmd BufNewFile,BufRead /path/to/project/**/*.custom setfiletype javascript内容嗅探的优势是对无扩展名文件也有效代价是每次打开文件都要跑一次匹配所以规则写得尽量窄、命中面越小越好。扩展名优先、内容兜底顺序别反。 5分钟造一个文件类型检测插件从零给 Vim 加一种类型三步就够写检测规则在用户配置目录的 ftdetect/ 下新建myext.vim~/.vim/ftdetect/同理内容就一行文件名不用和扩展名相同autocmd BufNewFile,BufRead *.myext setfiletype myext配语法高亮在 syntax/ 下放同名文件先声明要识别的关键词再链接到现成的高亮组配色不用自己发明syntax keyword myKeyword function return var hi link myKeyword Keyword验证链路打开一个*.myext文件输入:set filetype?显示myext说明检测和高亮都接通了。改动配置后重启 Vim 让它重读 ftdetect改动即刻生效。 排查工具箱快速定位Vim文件类型识别问题命令什么时候用:set filetype?看 Vim 当前认成了什么类型:echo filetype脚本或表达式里输出取值:filetype detect改完 vimrc 后重新跑一遍识别:set filetypejavascript手动强制判断高亮本身是否正常:syntax off关掉还有颜色说明问题不在识别排查时先看filetype的取值值不对是识别规则的问题值对了却没高亮再去看 syntax 文件。如果一条都不灵回头确认 vimrc 里有filetype plugin indent on仓库里的 static/minimal-vimrc.vim 保留了这行可以直接抄作基准。文件类型认对了高亮、缩进、补全才会一起就位。别让一个 .vue 或一段没有后缀的脚本挡住你进入 insert 模式。【免费下载链接】vim-galore:mortar_board: All things Vim!项目地址: https://gitcode.com/gh_mirrors/vi/vim-galore创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考