AstroNvim中.js/.ts文件auto import与snippet失效问题求助
解决AstroNvim中.js/.ts文件的Snippet、Auto Import及Emmet异常问题
下面是针对问题的具体解决步骤,按顺序尝试:
1. 统一文件类型关联
AstroNvim对.js/.ts和.jsx/.tsx的文件类型区分可能导致插件行为差异,直接让.js/.ts继承JSX相关的文件类型配置:
在user/init.lua中添加:
vim.api.nvim_create_autocmd("FileType", { pattern = {"javascript", "typescript"}, callback = function() -- 让JS/TS文件使用JSX/TSX的文件类型配置 vim.bo.filetype = vim.bo.filetype .. ".jsx" end })
2. 调整TSServer配置开启JSX支持
TSServer默认可能对纯JS/TS文件关闭了JSX相关的自动导入和提示,修改其配置:
在user/init.lua的LSP配置块中添加:
return { lsp = { servers = { tsserver = { settings = { javascript = { suggest = { autoImports = true }, jsx = { enable = true } }, typescript = { suggest = { autoImports = true }, jsx = { enable = true } } } } } } }
3. 让Snippet插件共享JSX片段
如果用的是LuaSnip,确保JS/TS能加载JSX的snippet集合:
在user/init.lua的插件配置中添加:
return { plugins = { { "L3MON4D3/LuaSnip", config = function(plugin, opts) require "plugins.configs.luasnip"(plugin, opts) local luasnip = require "luasnip" -- 让JS继承JSX的snippets,TS继承TSX的snippets luasnip.filetype_extend("javascript", {"javascriptreact"}) luasnip.filetype_extend("typescript", {"typescriptreact"}) end } } }
4. 开启Emmet对JS/TS的支持
如果用的是emmet-vim,让它识别JS/TS为JSX类型:
在user/init.lua中配置:
return { plugins = { { "mattn/emmet-vim", config = function() vim.g.user_emmet_settings = { javascript = {extends = "jsx"}, typescript = {extends = "tsx"} } end } } }
如果用的是nvim-cmp的emmet源,需要扩展支持的文件类型:
return { plugins = { { "hrsh7th/nvim-cmp", dependencies = {"hrsh7th/cmp-emmet"}, config = function(_, opts) local cmp = require "cmp" opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { {name = "emmet", filetypes = {"javascript", "typescript", "javascriptreact", "typescriptreact"}} })) cmp.setup(opts) end } } }
5. 检查Tree-sitter语法支持
确保已安装JS/TS/TSX的语法解析器,并且开启高亮和缩进:
return { plugins = { { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = {"javascript", "typescript", "tsx"}, highlight = {enable = true}, indent = {enable = true} } } } }
做完以上配置后,重启AstroNvim,测试.js/.ts文件的snippet、自动导入和Emmet功能是否恢复正常。
内容的提问来源于stack exchange,提问作者Robiul
相关产品推荐
相关产品推荐

