如何配置nvim-cmp仅插入函数名称不展开参数?
解决nvim-cmp仅插入函数名称不展开参数的问题
可行,你可以通过自定义映射逻辑,只插入补全项的函数名称而非完整展开内容,具体配置如下:
cmp.setup({ mapping = { -- 替换原来的<CR>映射 ['<CR>'] = cmp.mapping(function(fallback) if cmp.visible() then local selected_entry = cmp.get_selected_entry() if selected_entry then -- 仅插入补全项的标签文本(即函数名) vim.api.nvim_put({selected_entry.abbr or selected_entry.label}, 'c', false, true) cmp.close() else fallback() end else fallback() end end, {'i', 's'}), -- 保留其他你需要的映射,示例如下 ['<C-Space>'] = cmp.mapping.complete(), ['<C-k>'] = cmp.mapping.select_prev_item(), ['<C-j>'] = cmp.mapping.select_next_item(), } })
说明
- 这段代码会拦截回车按键:当补全菜单可见且有选中项时,直接插入该选项的
abbr(优先)或label(即函数名称),随后关闭补全菜单; - 若没有选中项或补全菜单不可见,则触发回车的默认行为,不影响正常编辑;
- 彻底避免自动插入参数列表、闭合括号等干扰内容,解决退出插入模式时可能破坏编辑内容的问题。
内容的提问来源于stack exchange,提问作者petersohn
相关产品推荐
相关产品推荐

