Telescope.nvim 如何用 vim_options 选择器模糊查找并直接修改 Vim 选项

发布时间:2026/9/15 11:20:14
Telescope.nvim 如何用 vim_options 选择器模糊查找并直接修改 Vim 选项 Telescope.nvim 如何用 vim_options 选择器模糊查找并直接修改 Vim 选项【免费下载链接】telescope.nvimFind, Filter, Preview, Pick. All lua, all the time.项目地址: https://gitcode.com/GitHub_Trending/te/telescope.nvim当你需要调整某个 Vim 选项比如number、splitright这类记不全语法的项时与其靠记忆敲:set可以在 Telescope.nvim 中打开vim_options选择器在全部 Vim 选项里模糊输入过滤选中目标项后直接在弹出的命令行里编辑当前值并确认生效。本文基于 Telescope 仓库文档与实现给出从安装确认到完成一次选项修改的完整操作路径。前提确认 Telescope 已安装可用vim_options是 Telescope 的内置 pickerbuiltin picker前提是先装好 Telescope 本体。仓库 README.md 列出的要求Neovim v0.11.7且构建时带LuaJIT可用:version确认依赖 nvim-lua/plenary.nvim安装片段中的dependencies部分。以 lazy.nvim 为例的安装配置摘自 README{ nvim-telescope/telescope.nvim, version *, dependencies { nvim-lua/plenary.nvim, -- optional but recommended { nvim-telescope/telescope-fzf-native.nvim, build make }, } }装完后按文档做两步检查:checkhealth telescope确认安装没有问题:Telescope find_files或:lua require(telescope.builtin).find_files()能弹出文件选择器即表示可用。README 同时说明Telescope 的内置功能都需要在配置里调用过require(telescope).setup()见 doc/telescope.txt 的 INTRODUCTION 部分。打开 vim_options 选择器vim_options支持两种调用方式来自 doc/telescope.txt 的telescope.command章节lua api 与 viml api viml api直接在命令模式输入 :Telescope vim_options lua api在命令行前加 :lua :lua require(telescope.builtin).vim_options()如果希望日常用快捷键打开可以照 README「Usage」一节给其他 picker 绑键的写法给builtin.vim_options加一个映射键位leaderfo仅为示例自行替换local builtin require(telescope.builtin) vim.keymap.set(n, leaderfo, builtin.vim_options, { desc Telescope vim options })打开后 prompt 标题为options结果窗口按选项名排序列出当前 Neovim 的全部选项。读懂结果行并用模糊输入过滤每一行选项的显示结构由 lua/telescope/make_entry.lua 中的gen_from_vimoptions定义共四列列内容第 1 列宽 25选项名高亮为Keyword第 2 列宽 12选项类型显示为[type]第 3 列宽 11作用域显示为[scope]第 4 列占满剩余宽度当前值模糊匹配的排序键ordinal由选项名、类型、作用域和当前值四部分拼接而成所以在 prompt 里输入内容不仅按选项名过滤也能命中类型、作用域和值的部分字符。picker 使用conf.generic_sorter通用模糊排序器输入即实时重排结果。例如想找splitright在 prompt 输入spli即可收窄输入某个值片段如想找当前为true的布尔项时也可以按值过滤。选中选项并直接修改当前值vim_options的核心行为对选中项按CR确认后进入编辑当前值的流程。实现见 lua/telescope/builtin/__internal.lua 中被替换的select_default动作在结果列表中用C-n/C-p或 normal 模式下的j/k把光标移到目标选项上按CRCR是 README「Default Mappings」中定义的Confirm selection默认映射此时命令行上会出现一条:set 选项名当前值命令——当前值已预填光标停在可编辑位置修改值例如把80改成120按回车执行这条 set 命令选项即按新值生效。两个实现细节值得注意布尔型选项的确认方式不同被选中项的type为boolean时feedkeys 生成的是:set 选项名!取反切换而不是值其他类型走当前值。没有选中项时不会报错崩溃选中的 entry 为空时代码会调用utils.__warn_no_selection builtin.vim_options给出警告并直接返回此时不会有任何修改发生。判断修改是否按你的意图执行可以在第 3 步回车前检查命令行内容命令行里预填的正是该选项的当前值你看到的命令就是回车后实际执行的内容。限制与边界vim_options本身没有 picker 专属参数。doc/telescope.txt 中telescope.builtin.vim_options()的参数部分只列出一个可选的optstelescope.builtin.vim_options.opts继承自telescope.builtin.base_opts可传通用配置如layout_config但没有该 picker 特有的键。viml api:Telescope vim_options keyvalue传参时任何 option 值中不能包含空格这是telescope.command章节明确说明的限制需要带空格的值请用 lua api 传 table。选项列表在打开 picker 时通过nvim_get_all_options_info()生成读取当前值失败的选项会被跳过不会出现在列表中。修改只影响本次 Neovim 会话内的运行时值来源是执行:set命令本身持久化写法如写入 vimrc不在该 picker 的职责范围内。完成一次查找—编辑—确认后选项即处于新值状态。若要继续调整其他项重新:Telescope vim_options打开即可列表刷新时会重新读取各选项的当前值。【免费下载链接】telescope.nvimFind, Filter, Preview, Pick. All lua, all the time.项目地址: https://gitcode.com/GitHub_Trending/te/telescope.nvim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考