Neovim中用lsp-zero配置Omnisharp时插入模式弹窗问题求助
解决lsp-zero v2.x配置Omnisharp时插入模式频繁弹窗问题
我使用lsp-zero(v2.x分支)配置Neovim的LSP服务,Omnisharp服务器能正常加载,但每次进入插入模式并按下按键时,都会频繁弹出提示。
我的Neovim LSP配置文件:
local lsp = require('lsp-zero').preset({}) lsp.on_attach(function(client, bufnr) lsp.default_keymaps({buffer = bufnr}) end) lsp.ensure_installed({ 'rust_analyzer', 'tsserver', 'eslint', 'lua_ls' }) local lsp_config= require("lspconfig") lsp_config.lua_ls.setup(lsp.nvim_lua_ls()) lsp_config['omnisharp'].setup { handlers = { ["textDocument/definition"] = require('omnisharp_extended').handler, }, cmd = { '/usr/bin/OmniSharp', '--languageserver' } } lsp.setup()
Lazy.nvim加载插件的配置:
{ 'VonHeikemen/lsp-zero.nvim', branch = 'v2.x', dependencies = { -- LSP Support {'neovim/nvim-lspconfig'}, -- Required { -- Optional 'williamboman/mason.nvim', build = function() pcall(vim.cmd, 'MasonUpdate') end, }, {'williamboman/mason-lspconfig.nvim'}, -- Optional -- Autocompletion {'hrsh7th/nvim-cmp'}, -- Required {'hrsh7th/cmp-nvim-lsp'}, -- Required {'L3MON4D3/LuaSnip'}, -- Required } }, { 'Hoffs/omnisharp-extended-lsp.nvim' }
解决方案
尝试以下几种方法解决弹窗问题:
调整Omnisharp的文本变更防抖设置
在Omnisharp的配置中添加防抖参数,减少插入模式下的请求频率:lsp_config['omnisharp'].setup { handlers = { ["textDocument/definition"] = require('omnisharp_extended').handler, }, cmd = { '/usr/bin/OmniSharp', '--languageserver' }, flags = { debounce_text_changes = 150 } -- 添加这一行 }针对Omnisharp禁用不必要的服务能力
在lsp.on_attach中判断客户端为Omnisharp时,关闭语义令牌等可能触发频繁通知的功能:lsp.on_attach(function(client, bufnr) lsp.default_keymaps({buffer = bufnr}) if client.name == 'omnisharp' then -- 禁用语义令牌服务,避免频繁通知 client.server_capabilities.semanticTokensProvider = nil -- 关闭插入模式下的诊断更新 vim.diagnostic.config({update_in_insert = false}, bufnr) end end)改用Mason管理Omnisharp安装
移除手动指定的cmd路径,让mason-lspconfig自动处理Omnisharp的启动路径,确保使用兼容版本:lsp_config['omnisharp'].setup { handlers = { ["textDocument/definition"] = require('omnisharp_extended').handler, } -- 移除手动cmd配置 }之后通过
:Mason命令安装或更新Omnisharp。
内容的提问来源于stack exchange,提问作者Ernesto
相关产品推荐
相关产品推荐

