Neovim自定义扩展名设置文件类型无效,语法高亮不生效如何解决
问题:.gitconfig-gh文件无法自动触发Treesitter语法高亮
我已按如下结构创建文件类型配置:
.config/nvim ├── after │ └── ftplugin │ └── gitconfig-gh.lua
文件内容为:
vim.opt.filetype = 'gitconfig'
但Treesitter语法高亮仍不生效,仅在打开~/.gitconfig-gh文件后手动执行:set filetype=gitconfig才有效。请问我是否遗漏了步骤?还有其他按扩展名设置文件类型的方法吗?
解决方法
你之前的思路有误:after/ftplugin/目录下的文件是针对已被Neovim识别的文件类型加载的配置脚本,而非用来定义新的文件类型关联。你创建的gitconfig-gh.lua只会在Neovim把文件识别为gitconfig-gh类型时才会执行,但你的需求是让.gitconfig-gh文件直接被识别为gitconfig类型,所以这个位置完全不对。
下面是三种正确的实现方式:
方法1:使用ftdetect目录(官方推荐)
创建~/.config/nvim/ftdetect/gitconfig-gh.lua文件,写入以下内容:
vim.filetype.add({ pattern = { [".gitconfig%-gh"] = "gitconfig", ["gitconfig%-gh"] = "gitconfig", }, })
这里的Lua模式匹配中,%-是对减号的转义,确保精准匹配带-gh后缀的文件名。
方法2:在init.lua中直接配置
如果不想单独创建文件,也可以在你的init.lua里直接添加这段配置:
vim.filetype.add({ pattern = { [".gitconfig%-gh"] = "gitconfig", }, })
方法3:兼容Vim的VimScript方式
创建~/.config/nvim/ftdetect/gitconfig-gh.vim文件,写入:
autocmd BufNewFile,BufRead *.gitconfig-gh,gitconfig-gh setfiletype gitconfig
完成上述任意一种配置后,重启Neovim,打开~/.gitconfig-gh文件就能自动触发gitconfig类型的Treesitter语法高亮了。
内容的提问来源于stack exchange,提问作者gmtek
相关产品推荐
相关产品推荐

