You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neovim跨语言代码补全异常求助:标签内未触发对应语言提示

解决Neovim跨嵌入式语言补全问题

一、修复HTML文件中<script>/<style>标签内的补全问题

html-lsp默认未启用嵌入式JS/CSS的LSP联动,需在配置中开启支持:

在你的LSP配置文件(如init.lua)中,修改html-lsp的setup代码:

require('lspconfig').html.setup({
  init_options = {
    embeddedLanguages = {
      css = true,
      javascript = true
    }
  },
  -- 保留你已有的on_attach、capabilities等配置
})

配置后,html-lsp会在<script>/<style>标签内自动调用对应JS/TS、CSS的LSP提供补全,确保tsserver(或eslint)和cssls已正确安装并配置。

二、解决JS/TS中编写HTML/CSS的补全问题

1. JSX/TSX场景

tsserver默认支持JSX的HTML补全,但需确保文件类型被正确识别。若未自动识别,添加以下自动命令:

autocmd BufNewFile,BufRead *.jsx set filetype=javascriptreact
autocmd BufNewFile,BufRead *.tsx set filetype=typescriptreact

2. 普通模板字符串场景

借助nvim-treesitter的语言注入功能,让Neovim识别模板字符串内的语言:

  • 安装html、css语法解析器:
:TSInstall html css
  • 启用treesitter语言注入:
require('nvim-treesitter.configs').setup({
  injections = { enable = true }
})

同时,给tsserver添加模板字符串补全支持:

require('lspconfig').tsserver.setup({
  init_options = {
    preferences = {
      includeCompletionsForModuleExports = true
    }
  }
})

三、验证与排查

  • 用:LspInfo检查html、tsserver、cssls是否处于运行状态;
  • 确保nvim-cmp已配置nvim_lsp作为补全来源:
require('cmp').setup({
  sources = { { name = 'nvim_lsp' } }
})
  • 重启Neovim后测试补全效果。

内容的提问来源于stack exchange,提问作者Newson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 01:35:24