Telescope.nvim:查找,过滤,预览,选择

2021-05-15 15:48:49

Telescope.Nvim是一个高度可扩展的模糊发现在列表中。建立在NeoVim核心的NatiaWesome特征。望远镜以周膜为中心,允许易于定制。

"使用望远镜命令线糖查找文件。 nnoremap<领导者> ff< cmd>望远镜find_files< cr> nnoremap<领导者> FG< cmd>望远镜live_grep< cr> nnoremap<领导> fb< cmd>望远镜缓冲器< cr> nnoremap<领导> fh< cmd>望远镜welp_tags< cr> "使用Lua函数nnoremap<领导者> FF< cmd> Lua要求('望远镜。Builtin')。 find_files()< cr> nnoremap<领导者> FG< cmd> Lua要求('望远镜。Builtin')。 live_grep()< cr> nnoremap<领导> fb< cmd> Lua要求('望远镜。Builtin')。缓冲器()< cr> nnoremap<领导> fh< cmd> Lua要求('望远镜。Builtin')。 help_tags()< cr>

与大多数Vim插件不同,望远镜.NVIM可以通过全局应用程序或每个选择器的个人来定制。

影响所有选择器的全局自定义可以通过主题设置()方法(参见下面的默认值)来完成

个人定制通过传递OptsBuilt-In拾取器来影响单个选择器(例如,构建.FD(OPTS))请参阅“配置协同维基”页面获取想法。

作为使用setup()方法的示例,以下代码将遥感器配置为其默认设置。

要求('望远镜')。设置{默认值= {vimgrep_arguments = {' rg&#39 ;,' - 颜色=从不&#39 ;,' - no-stawing&#39 ;,#39; --with-filename&#39 ;,' - 线号&#39 ;,' - 列&#39 ;,' - 聪明的案例' },提示_position ="底部&#34 ;,提示_prefix ="> ",selection_caret ="> ",entry_prefix =" ",initial_mode ="插入" selection_stretygy ="复位",sorting_strategy =" descending",layout_strategy ="横向&# 34;,layout_defaults = {stully = {mirror = false,},垂直= {mirror = false,},},file_sorter = require'望远镜。' get_fuzzy_file,file_ignore_patterns = {},generic_sorter =要求'望远镜。' get_generic_fuzzy_sorter,shorten_path = true,winblend = 0,windiew_cutoff = 120,结果_height = 1,结果_width = 0.8,border = {},边框= {'─''' #39 ;,'─''│&#39 ;,''╮&#39 ;,' #39 ;,'╰' },color_devicons = true,dift_less = true,set_env = {[' colorterm'] =' truecolor' }, - 默认= nil,file_previewer =要求'望远镜。预览者' Vim_buffer_cat。新的,grep_previewer =要求'望远镜。预览者' vim_buffer_vimgrep。新的,qflist_previewer =要求'望远镜。预览者' vim_buffer_qflist。新的, - 开发人员配置:不适用于常规覆盖Buffer_Previewer_Maker = Require'望远镜。预览者' buffer_previewer_maker}}

要在.vim文件中嵌入上面的代码片段(例如,在'after / plopin / telescope.nvim.vim)中,将其包裹在Lua< EOF代码片段EOF:

如何将文件加载,并且将使用哪个荧光笔。扩展将改变它

很像内置拾取器,有许多操作可以选择从删除望远镜缓冲映射或创建新的自定义操作:

- 内置操作本地变换_mod =要求(' telescope.actions.mt')。 Transform_Mod - 或创建自定义操作本地my_cool_custom_action = transform_mod({x =函数()打印("此函数在另一个操作之后运行。提示_bufnr:" .. prompt_bufnr) - 在此输入函数逻辑。您可以从Lua / Telescope / Actions.Lua End,}中获取灵感

本地行动=要求('望远镜。) - 全球重新映射--------------------------- - 要求('望远镜')。 setup {默认值= {mappings = {i = { - 禁用一个键映射,将[map] = false - 所以,不要映射""& #34;< c-x> "] = false,否则,只需将映射设置为您想要的函数。 ["< c-i> "] =动作。 select_horizo​​tertal, - 添加多个动作["< cr> "] =动作。 select_default +操作。中心, - 您可以像你喜欢["< cr>你可以连续执行尽可能多的动作。 "] =动作。 select_default +操作。中心+ my_cool_custom_action,},n = {["< esc> "] =动作。关闭,["< c-i> "] = my_cool_custom_action,},},}}

对于选择器特定的重新映射,可以通过将actpl_mappings键设置为函数来完成,如下所示

本地操作=要求('望远镜。)本地action_set =要求(' telescope.actions.set') - 选择器特定的重新映射--------- ---------------------要求('望远镜。Builtin')。 FD({ - 或新的自定义选择器' sative_mappings字段:附件_mappings = function(prompt_bufnr) - 这将替换默认action action actions_set映射的键上的选择no mather。选择:替换(函数(promption_bufnr,type)本地条目= action_state。get_selected_entry()操作。关闭(提示_bufnr)打印(vim。检查(条目)) - 代码在这里结束) - 您还可以使用前后操作提升一个操作,然后在操作之后运行action_set。选择:增强({pre = function() - 将在Actions.Select_Default结束之前运行,Post = function() - 将在ActionS.Select_default结束,}之后运行 - 或替换所有命令:默认,水平,垂直,标签action_set。选择:替换(函数(_,cmd) - 将根据击键结束打印编辑,新,vnew或标签)返回true end,})------- ----------------------添加新映射要求的更实际的例子'望远镜.Builtin' git_branches({attach_mappings =函数(_,地图)地图(' i''''行动。git_delete_branch) - 这个动作已经存在地图( ' n&#39 ;,'''操作。git_delete_branch) - 这个动作已经存在 - 有关更多操作看Lua /望远镜/动作/ init。 Lua返回True End})

模糊搜索通过git ls-files命令的输出,尊重.gitignore,可选地忽略未触发的文件 在当前工作目录中搜索字符串,并在键入时获取结果(尊重.gitignore) 列出当前工作目录中的文件和文件夹,打开文件,导航文件系统,并创建新文件和文件夹 列出具有标记位置文件预览的当前目录中的标签(在引入新更改时需要运行CTAGS -R以生成标签或更新) 列出可用的帮助标签,并打开一个新的窗口,其中包含相关的帮助信息.Cr> 列出游标下当前单词的拼写建议,替换具有所选建议的Word< cr> 列出光标下单词的任何LSP操作,可以用< cr&gt触发。

列出当前工作区的LSP诊断如果支持,否则在所有打开的缓冲区中搜索

转到光标下的单词的实施如果有一个,否则只在望远镜中显示所有选项

转到光标下的单词的定义,如果有的话,否则只有一个,否则显示望远镜中的所有选项

对于* _symbols和* _diagnostics LSP选择器,您可以使用特殊过滤来指定您的搜索。 When in insert mode while the picker is open, type : and then press <C-l>要使用您可以使用的所有可能的过滤器获取自动填充功能。

即,在使用LSP_Document_Symbols选择器时,添加:方法:对您的查询过滤出任何未识别为TreeGitter的文档Document符号。

列出具有日志预览的所有分支,结帐动作&lt; cr&gt;,跟踪动作&lt; c-t&gt;和rebase动作&lt; c-r&gt;

列出文件数据/望远镜源/ *中的符号。json在您的rtp中找到。可以在此处找到更多信息和符号源

默认的预览器现在来自Vim_buffer_ Previewers。它们使用Vim缓冲区来显示文件和文件突出显示的文件和Regex ..这些预览者正在猜测所选文件的文件类型,因此可能存在其未命中的情况,从而导致错误的亮点。这是因为我们可以&#39; t以传统方式确定文件型(我们不做&#39; t做bufload。我们用vim.loop.fs_读取文件async并只附加一个荧光笔),因为我们可以&#39; Texecute AutoCommands,否则预览器的速度将放慢速度。如果您要配置更多Fiki,请查看全体维基。

如果要配置Vim_buffer_ previewer,例如,您希望将线路包装执行此操作:

在查找器返回的每个项目上的选择器调用一个分拣机。它是一个数字,它相当于&#34;距离&#34;在当前提示之间和Finder返回的条目之间。

可以设置常见的设置组,以允许主题。我们有一些内置主题,但正在寻找更酷的选项。

主题应该与每个望远镜都配合使用.Builtin函数。如果您希望Tomake主题,请查看Lua / Telescope / Themes.lua。

望远镜提供了创建和amp的能力;注册扩展,以各种方式改善望远镜。

一些扩展提供与内部工具的集成,外部的内部工具。其他人通过使用编译的C和直接与Lua接口来提供PerformanceShancements。

您可以跳过显式加载扩展(然后它们将被加载),但标签完成将无法立即使用。

- lua / telescope / finders.luafinder:new {entry_maker =函数(行)结束,fn_command = function(){command =&#34; &#34;,args = {&#34; ls-files&#34; }}结束,static = false,maximum_results = false}

- lua / telescope / picters.luapicker:new {prompt_title =&#34; &#34;, - 所需查找器=功能, - 查看Lua / telescope / finder.lua sorter = function, - 查看lua / telescope / sorter.lua previewer = function, - 查看lua / telescope / previewer.lua selection_strategy =&#34;重置&#34;,遵循,重置,行边框= {},边框= {&#34;─&#34;│&#34 ;,&#34 ;─&#34;&#34;│&#34 ;,&#34;┌&#34 ;,&#34;┐&#34 ;,&#34;┘&#34 ;,&#34 ;└&#34;},preview_cutoff = 120,default_selection_index = 1, - 更改初始选择行的索引}

要仅覆盖一些默认映射,您可以使用Setup Table中的Attach_mappings键。例如:

函数my_custom_picker(结果)选择器。 new(opts,{prompt_title =&#39; finder = finders。new_table(结果),sorter = sorters。fuzzy_with_index_bias(),附件_mappings = function(_,地图) - map&#34; &lt; cr&gt;&#34;在函数的插入模式下,actions.set_command_line地图(&#39; i&#39;&#39;&#39;&#39;行动。set_command_line) - 如果“acept_mappings`”的返回值是真的,那么另一个 - 默认映射仍然适用。 - 如果不希望应用任何其他映射,则返回false。 - - 返回返回值_must_返回_must_ 。它是一个错误的错误。返回true end,}):find()结束

layout_strategies。 theuremather =函数(self,max_columns,max_lines)本地layout_config = validate_layout_config(self。layout_config或{},{widey_padding =&#34;填充宽度和#34;,height_padding =&#34的多少个单元格;多少个细胞填充高度&#34;,preview_width =&#34;(可解析):确定预览宽度&#34;,})...结束

所有望远镜.NVIM函数被包裹在VIM命令中,以便于访问,ITSSupports选项卡完成和设置选项。

&#34;显示所有内置拾取器:望远镜&#34;标签完成:望远镜| &lt;标签&gt;:望远镜find_files&#34;设置选项:望远镜find_files prompt_prefix =🔍&#34;如果选项是Lua代码中的表类型,则可以使用`,`连接每个命令字符串,例如:&#34; find_command,vimgrep_arguments他们都是表类型。所以在CommandLine中配置它:Telescope Find_files find_command = rg, - 忽略, - 隐藏, - 文件提示_prefix =🔍

设置功能中可用的所有选项(请参阅配置选项和某些其他功能,可以在自定义选择器或内置功能中轻松更改。

- 禁用查找filesnoremap&lt;领导者&gt; ff:lua要求(&#39; teleScope.builtin&#39;)。 find_files({previewer = false})&lt; cr&gt; - 更改更改提示前缀find_files内置功能:nnoremap&lt;领导&gt; fg:lua要求(&#39;望远镜。Builtin&#39;)。 live_grep({prompt_prefix =🔍})&lt; cr&gt; nnoremap&lt;领导&gt; fg:望远镜live_grep提示_prefix =🔍&lt; cr&gt;

您可以使用10个突出显示,以满足您的需求:

突出显示望远镜伸展guifg =#d79921 gui = bold&#34;选定的项目突出显示望远镜架倾斜aret guifg =#cc241d&#34;选择插图突出显示望远镜emultiselection guifg =#928374&#34;多光线突出显示伸缩缩减射门=#00000&#34;由望远镜创建的浮动窗口。 &#34;边框突出显示组。突出显示telescopeborder guifg =#ffffff uplight telescopepromptborder guifg =#ffffff excullow telescoperesultsborder guifg =#ffffff uplowlile telescopepreviewborder guifg =#ffffff&#34;用于突出显示您匹配的字符。突出显示推翻伸展=蓝色&#34;用于提示前缀突出显示telescopepromptprefix guifg =红色