如何在LazyVim中禁用TypeScript对象内带~的代码提示?
解决LazyVim中TypeScript提示带~(波浪线)项的问题
方法一:配置tsserver禁用冗余提示
这些带~的提示通常是tsserver返回的重复实现类或冗余补全条目,可通过调整tsserver的LSP配置从源头禁用:
在你的LazyVim配置文件(比如lua/plugins/lsp.lua)中添加以下内容:
require("lazyvim.util").lsp.on_setup(function(server) if server.name == "tsserver" then server.config.settings = vim.tbl_deep_extend("force", server.config.settings, { typescript = { completion = { -- 排除实现类类型的补全提示 filteredTypes = { "implementation" }, -- 禁用自动可选链的冗余补全 excludeAutomaticOptionalChainCompletions = true, }, }, javascript = { completion = { filteredTypes = { "implementation" }, excludeAutomaticOptionalChainCompletions = true, }, }, }) end end)
方法二:通过nvim-cmp过滤提示项
如果tsserver配置无法解决,可直接在补全层面对带~的条目进行过滤:
在lua/plugins/cmp.lua或自定义配置中添加:
require("cmp").setup({ sources = vim.tbl_map(function(source) if source.name == "nvim_lsp" then source.entry_filter = function(entry) -- 剔除label末尾带~的补全项 return not string.match(entry:get_completion_item().label, "~$") end end return source end, require("cmp").config.sources), })
两种方法中,方法一从LSP服务端控制输出,性能更优;方法二是客户端层面的过滤,适配性更广。
内容的提问来源于stack exchange,提问作者Roman Mahotskyi
相关产品推荐
相关产品推荐

