尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Telescope.nvim 如何用 quickfixhistory 选择器浏览并重新打开历史 quickfix 列表

Telescope.nvim 如何用 quickfixhistory 选择器浏览并重新打开历史 quickfix 列表 Telescope.nvim 如何用 quickfixhistory 选择器浏览并重新打开历史 quickfix 列表【免费下载链接】telescope.nvimFind, Filter, Preview, Pick. All lua, all the time.项目地址: https://gitcode.com/GitHub_Trending/te/telescope.nvim在 Neovim 里连续使用live_grep、grep_string或把结果发送到 quickfix 列表时quickfix 列表会被不断覆盖——前一次搜索的匹配结果很快就被下一次替换掉。telescope.nvim提供了builtin.quickfixhistory选择器把 neovim 保留在历史里的 quickfix 列表全部列出来你可以在其中挑选某一条历史列表再用builtin.quickfix重新打开它或直接打开对应的 quickfix 窗口逐个回到旧结果的位置。这篇文章面向已经装好telescope.nvim的 Neovim 用户带你完成一条完整路径确认插件可用 → 产生若干条 quickfix 历史 → 用quickfixhistory浏览这些历史 → 用两种方式重新打开历史列表并跳回具体位置。前置条件确认 telescope 已正确安装telescope.nvim的运行前提是 README 中列出的要求Neovim v0.11.7且构建时带 LuaJIT用:version检查依赖 plenary.nvim。安装完成后按 README 的指引执行:checkhealth telescope确认各项检查通过。如果想快速验证插件可运行可以先试一下:Telescope find_files能弹出文件选择器即说明安装成功。quickfixhistory本身是 builtin 选择器不需要任何扩展或额外配置即可使用。先产生几条 quickfix 历史quickfixhistory浏览的是 neovim 的 quickfix 历史所以前提是这个历史里有内容。README 的 Default Mappings 表格给出了两种把结果送进 quickfix 列表qflist的默认映射适用于大多数 picker映射作用C-qinsert 模式Send all items not filtered to quickfixlist (qflist)M-qinsert 模式Send all selected items to qflist也就是说在live_grep、grep_string等 picker 中按C-q当前全部结果就会替换写入 quickfix 列表重复执行几次不同搜索quickfix 历史就会累积出多条记录。doc/telescope.txt 中另外记录了可映射的 actions适合需要把发送结果 打开列表做成一步映射的场景actions.send_to_qflistSend all entries to the quickfix list, replacing the previous entriesactions.add_to_qflistAdds all entries to the quickfix list, keeping the previous entriesactions.open_qflistOpen the quickfix list文档建议与 send 类 action 组合使用例如actions.smart_send_to_qflist actions.open_qflist这一步只是为了让历史里有多条列表如果你此前正常用过 quickfix可以直接跳到下一节。打开 quickfixhistory 浏览历史列表所有 telescope builtin 函数都被包装成了:Telescope命令见 README 的 Vim Commands 一节支持 Tab 补全因此直接执行:Telescope quickfixhistory也可以在 Lua 中调用require(telescope.builtin).quickfixhistory()picker 打开后prompt 标题显示为Quickfix History。结果列表中每一行是一条历史 quickfix 列表条目显示为该列表的title没有 title 时显示为Untitled预览窗口标题为Quickfix List Preview会把该列表内所有条目的内容渲染出来doc/telescope.txt 对builtin.quickfixhistory的描述是 Lists all quickfix lists in your history and open them withbuiltin.quickfix。实现见 builtin/__internal.lua。quickfixhistory本身只接受通用的{opts}参数doc/telescope.txt中 Parameters 一节仅列出{opts} (table?)没有 quickfix 专属的配置项。重新打开某条历史列表在Quickfix History选择器中用j/k或C-n/C-p移动到目标列表后有两种重新打开的方式方式一cr用builtin.quickfix重新打开默认选择动作按CR后telescope 关闭当前 picker以选中列表的编号nr调用builtin.quickfix在Quickfix标题的新 picker 里列出该历史列表的全部条目再按CR即跳转到对应位置builtin.quickfix的文档描述Lists items in the quickfix list, jumps to location oncr。builtin.quickfix支持以下可选参数来自 doc/telescope.txtrequire(telescope.builtin).quickfix { show_line true, -- (boolean, 默认 true) show results text trim_text false, -- (boolean, 默认 false) trim results text nr 2, -- (number) specify the quickfix list number }其中nr指定要查看哪一条 quickfix 列表适合你已知目标列表编号时直接打开而不必再走一遍历史选择器。方式二C-q直接打开 quickfix 窗口在Quickfix Historypicker 中按C-qtelescope 会关闭 picker切换到选中编号的历史列表并执行botright copen即在底部直接打开该历史列表的 quickfix 窗口之后用 Neovim 原生的 quickfix 导航键在条目间跳转。这一分支对应 README 对builtin.quickfixhistory的描述open them withbuiltin.quickfixor quickfix window内部实现见 builtin/__internal.lua。两种方式的选择依据想继续模糊过滤、用 telescope 的预览窗看条目时用CR只想快速在窗口里滚动旧结果时用C-q。验证方式与已知限制判断这条路径是否工作正常可以按文档中实际给出的现象核对执行:Telescope quickfixhistory弹出 prompt 标题为Quickfix History的 picker说明选择器本身可用在结果列表中选择某一条预览窗显示Quickfix List Preview并列出该条目的内容若目标 quickfix 列表实际为空builtin.quickfix不会打开 picker而是以 INFO 级别显示No quickfix items提示见 builtin/__internal.lua这是正常行为而非报错。需要留意的限制历史深度上限neovim 对 quickfix 历史只保留有限条目。doc/telescope.txt 写明 It seems that neovim only keeps the full history for 10 lists源码中的注释也写明 (n)vim keeps at most 10 quickfix lists in fullbuiltin/__internal.lua。也就是说超过这个范围后最旧的历史列表拿不到完整内容不要指望能翻到任意久以前的列表。条目显示依赖 title历史列表没有 title 时在列表中显示为Untitled此时只能靠预览窗里的条目内容来辨认它对应哪次搜索。builtin.quickfixhistory只接受通用opts无法对历史列表这一层做 quickfix 专属的显示配置show_line、trim_text这些参数作用于打开列表后的builtin.quickfix一层。完整参数与行为细节可继续查阅 doc/telescope.txt 中*telescope.builtin.quickfixhistory()*和*telescope.builtin.quickfix()*两个标签小节。【免费下载链接】telescope.nvimFind, Filter, Preview, Pick. All lua, all the time.项目地址: https://gitcode.com/GitHub_Trending/te/telescope.nvim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表