You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Neovim中Python语义语法高亮功能失效问题求助

Neovim中Python语义语法高亮功能失效问题求助

嗨,我来帮你排查这个Python语义高亮失效的问题~从你描述的情况来看,TypeScript里tsserver的语义高亮正常,但Python的pyright只工作了类型检查部分,没触发语义高亮,大概率是配置层面的问题,我给你几个排查方向和解决办法:

1. 先确认Neovim是否启用了LSP语义高亮功能

很多时候LSP的语义高亮需要手动开启,你可以在现有的lua配置块里添加这段代码:

lua << EOF
require'lspconfig'.tsserver.setup{}
require'lspconfig'.pyright.setup{}

-- 启用LSP语义高亮及相关回调
vim.api.nvim_create_autocmd('LspAttach', {
  group = vim.api.nvim_create_augroup('UserLspSemanticHighlight', {}),
  callback = function(ev)
    -- 开启当前缓冲区的文档高亮
    vim.lsp.buf.document_highlight()
    -- 光标移动时清除旧的高亮
    vim.api.nvim_create_autocmd('CursorMoved', {
      buffer = ev.buf,
      callback = function()
        vim.lsp.buf.clear_references()
      end,
    })
  end,
})

-- 确保终端支持真彩色,主题高亮才能正常显示
vim.o.termguicolors = true
EOF

2. 检查vscode.nvim主题是否开启了LSP高亮支持

vscode.nvim主题有专门的配置项来启用LSP相关的高亮组,你可以在init.vim里添加这行配置:

let g:vscode_lsp = 1

如果主题版本比较旧,建议先更新一下插件:在Neovim里执行:PlugUpdate Mofiqul/vscode.nvim,确保主题是最新版本,避免兼容性问题。

3. 确认pyright是否启用了语义高亮

虽然pyright默认应该开启语义高亮,但你可以手动在项目根目录创建pyrightconfig.json文件,强制开启该功能:

{
  "semanticHighlighting": true,
  "typeCheckingMode": "basic"
}

创建后重启Neovim,打开Python文件看看是否生效。另外可以用:LspInfo命令检查pyright服务是否正常运行,有没有报错信息。

4. 试试搭配nvim-treesitter增强高亮效果

如果上面的方法都没解决,你可以尝试安装nvim-treesitter插件,它的语法高亮和LSP语义高亮可以互补,很多时候效果更好:
首先在Plug块里添加:

call plug#begin()
Plug 'Mofiqul/vscode.nvim'
Plug 'neovim/nvim-lspconfig'
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}  " 新增这行
call plug#end()

然后在lua配置块里添加treesitter的设置:

lua << EOF
-- 之前的LSP配置...

require'nvim-treesitter.configs'.setup {
  highlight = {
    enable = true,
    -- 关闭vim原生正则高亮,避免冲突
    additional_vim_regex_highlighting = false,
  },
}
EOF

安装完成后执行:TSInstall python安装Python的语法解析器,重启Neovim后应该能看到更完善的高亮效果。

你可以按照上面的步骤一步步试,大概率能解决问题~

备注:内容来源于stack exchange,提问作者kalilamodow

火山引擎 最新活动