如何滚动kkharji/lspsaga.nvim生成的Hover文档?
如何滚动Lspsaga的Hover文档?
我使用:Lspsaga hover_doc命令查看光标所在函数/方法的Hover文档时,该怎么滚动这个文档?以下是我的Lspsaga配置:
local lspsaga = require 'lspsaga' lspsaga.setup { -- defaults ... debug = false, use_saga_diagnostic_sign = true, -- diagnostic sign error_sign = "", warn_sign = "", hint_sign = "", infor_sign = "", diagnostic_header_icon = " ", -- code action title icon code_action_icon = " ", code_action_prompt = { enable = true, sign = true, sign_priority = 40, virtual_text = true, }, finder_definition_icon = " ", finder_reference_icon = " ", max_preview_lines = 10, finder_action_keys = { open = "o", vsplit = "s", split = "i", quit = "q", scroll_down = "<C-j>", scroll_up = "<C-k>", }, code_action_keys = { quit = "q", exec = "<CR>", }, rename_action_keys = { quit = "<C-c>", exec = "<CR>", }, definition_preview_icon = " ", border_style = "single", rename_prompt_prefix = "➤", rename_output_qflist = { enable = false, auto_open_qflist = false, }, server_filetype_map = {}, diagnostic_prefix_format = "%d. ", diagnostic_message_format = "%m %c", highlight_prefix = false, } local wk = require("which-key") wk.register({ ['gr'] = {'<Cmd>Lspsaga rename<CR>', 'Lspsaga Rename'}, ['gx'] = {'<Cmd>Lspsaga code_action<CR>', 'Lspsaga Code Action'}, ['K'] = {'<Cmd>Lspsaga hover_doc<CR>', 'Lspsaga hover document'}, ['go'] = {'<Cmd>Lspsaga show_line_diagnostics<CR>', 'Lspsaga show_line_diagnostics'}, ['gj'] = {'<Cmd>Lspsaga diagnostic_jump_next<CR>', 'Lspsaga diagnostic_jump_next'}, ['gk'] = {'<Cmd>Lspsaga diagnostic_jump_prev<CR>', 'Lspsaga diagnostic_jump_next'}, }) --- In lsp attach function local map = vim.api.nvim_buf_set_keymap --- map(0, "n", "gr", "<cmd>Lspsaga rename<cr>", {silent = true, noremap = true}) --- map(0, "n", "gx", "<cmd>Lspsaga code_action<cr>", {silent = true, noremap = true}) --- map(0, "x", "gx", ":<c-u>Lspsaga range_code_action<cr>", {silent = true, noremap = true}) --- map(0, "n", "K", "<cmd>Lspsaga hover_doc<cr>", {silent = true, noremap = true}) --- map(0, "n", "go", "<cmd>Lspsaga show_line_diagnostics<cr>", {silent = true, noremap = true}) --- map(0, "n", "gj", "<cmd>Lspsaga diagnostic_jump_next<cr>", {silent = true, noremap = true}) --- map(0, "n", "gk", "<cmd>Lspsaga diagnostic_jump_prev<cr>", {silent = true, noremap = true}) map(0, "n", "<C-u>", "<cmd>lua require('lspsaga.action').smart_scroll_with_saga(-1, '<c-u>')<cr>", {}) map(0, "n", "<C-d>", "<cmd>lua require('lspsaga.action').smart_scroll_with_saga(1, '<c-d>')<cr>", {})
解决方案
从你的配置来看,你已经设置了智能滚动映射,直接用以下快捷键即可滚动Hover文档:
- 向上滚动:
<C-u>(Ctrl+u) - 向下滚动:
<C-d>(Ctrl+d)
这两个映射通过require('lspsaga.action').smart_scroll_with_saga实现,它会自动识别当前打开的是Lspsaga的浮动窗口(比如Hover文档、定义预览等),并执行对应的滚动操作,不会影响普通窗口的滚动行为。
如果需要自定义滚动快捷键,可以修改lsp attach函数中的映射代码,把<C-u>/<C-d>换成你习惯的按键。比如改成<C-j>和<C-k>:
map(0, "n", "<C-j>", "<cmd>lua require('lspsaga.action').smart_scroll_with_saga(1, '<c-j>')<cr>", {}) map(0, "n", "<C-k>", "<cmd>lua require('lspsaga.action').smart_scroll_with_saga(-1, '<c-k>')<cr>", {})
另外,也可以在Hover文档窗口中直接使用鼠标滚轮滚动(如果你的Neovim配置支持鼠标的话)。
内容的提问来源于stack exchange,提问作者musako
相关产品推荐
相关产品推荐

