如何在鼠标悬停时获取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
相关产品推荐
相关产品推荐

