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

无需按Esc,如何关闭nvim中nvim-cmp的内容补全菜单并换行?

解决nvim-cmp中按ENTER直接换行而不选中补全项的问题

方法一:仅选中补全项时触发补全

在你的nvim-cmp配置中,调整<CR>的映射,将select参数设为false:

cmp.setup({
  -- 保留其他已有配置项
  mapping = {
    -- 保留<C-n>、<C-p>等导航映射
    ['<CR>'] = cmp.mapping.confirm({
      select = false, -- 仅手动选中补全项时,按ENTER才插入补全内容
    }),
  },
})

设置后,补全菜单弹出但未选中任何项时,按ENTER会直接执行默认换行,保留你输入的内容;只有选中补全项后按ENTER才会插入补全内容。

方法二:强制关闭菜单后换行

若你希望无论是否选中补全项,按ENTER都直接换行,可以自定义<CR>的行为:

cmp.setup({
  mapping = {
    ['<CR>'] = cmp.mapping(function(fallback)
      if cmp.visible() then
        cmp.abort() -- 关闭补全菜单
      end
      fallback() -- 执行默认换行操作
    end, { 'i', 's' }),
  },
})

此配置下,按ENTER会先关闭弹出的补全菜单(如果存在),再执行换行,完全不会触发补全插入。

注意事项

  • 若使用lsp-zero等封装框架,需确保自定义映射覆盖框架默认配置。
  • 修改后重启Neovim或执行:source %加载配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:01:03