如何调整Telescope find_files排序优先级,优先文件名匹配?
调整Telescope find_files排序:让文件名匹配优先
不用自己写自定义file_sorter,你已经在用的fzf扩展就能解决这个问题,而且性能完全不用担心——fzf是原生C实现的,比Lua自定义逻辑高效得多。
核心思路是调整fzf的tiebreak规则,也就是当多个结果匹配得分相同时的排序优先级。我们可以让匹配位置更靠后的结果优先,而文件名恰好是路径的最后部分,这样文件名中的匹配会比路径目录中的匹配获得更高的排序权重。
修改你的配置如下:
extensions = { fzf = { fuzzy = true, override_generic_sorter = true, override_file_sorter = true, case_mode = "smart_case", -- 添加这部分配置,指定tiebreak规则 extra_args = function() return { "--tiebreak", "end" } end, }, },
如果想要更精细的控制,比如在tiebreak时优先按匹配位置靠后,再按路径长度短的结果靠前,可以把参数改成:
extra_args = function() return { "--tiebreak", "end,length" } end,
参数说明:
end:当匹配得分相同时,匹配位置更靠后的结果排在前面(文件名匹配的位置通常比路径目录中的匹配更靠后)length:如果匹配位置也相同,路径更短的结果优先
这样调整后,你搜索特定文件名时,目标文件会更靠前出现,不用再滚动很久。
内容的提问来源于stack exchange,提问作者Poisonbox
相关产品推荐
相关产品推荐

