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

如何在鼠标悬停时获取nvim-ufo的折叠内容预览?

解决nvim-ufo鼠标悬停显示折叠内容预览的问题

你的foldmethod是indent,要实现鼠标悬停折叠行时显示折叠内容预览、替换默认LSP单词文档的需求,可以通过以下配置实现:

  • 绑定事件实现折叠行预览逻辑
    添加以下Lua代码到你的Neovim配置文件(比如init.lua):

    -- 鼠标悬停折叠行时显示ufo预览,替换LSP悬停
    vim.api.nvim_create_autocmd("CursorHold", {
      callback = function()
        -- 尝试获取折叠内容预览窗口ID
        local ufo_winid = require('ufo').peekFoldedLinesUnderCursor()
        if ufo_winid then
          -- 关闭可能存在的LSP悬停预览窗口
          local lsp_preview_win = vim.fn.filter(vim.api.nvim_list_wins(), function(win)
            return vim.api.nvim_win_get_option(win, 'previewwindow')
          end)[1]
          if lsp_preview_win then
            vim.api.nvim_win_close(lsp_preview_win, true)
          end
        else
          -- 非折叠行正常触发LSP悬停(不需要的话可以删掉这行)
          vim.lsp.buf.hover()
        end
      end,
    })
    
  • 优化预览窗口样式(可选)
    如果你想调整预览窗口的外观,可以在ufo的setup配置里修改preview选项:

    require('ufo').setup({
      preview = {
        win_config = {
          border = {'', '─', '', '', '', '─', '', ''}, -- 仅显示上下边框
          winblend = 5 -- 窗口透明度
        }
      },
      -- 你的其他ufo配置...
    })
    

配置完成后,当光标(或鼠标)停留在折叠行上时,会自动弹出折叠内容的预览窗口,同时关闭LSP的单词悬停;非折叠行则保持原有的LSP悬停逻辑(如果保留了vim.lsp.buf.hover()的话)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:52:38