当前位置: 首页 > Linux

模糊搜索神器FZF番外篇

时间:2023-04-06 02:55:35 Linux

模糊搜索神器FZF番外篇模糊查找器什么是模糊搜索?广义上的模糊搜索是指搜索到的信息与搜索到的问题之间存在一定的差异。这种差异就是搜索中“模糊”的意思。例如,当查找Smith这个名字时,会发现类似Smithe、Smythe、Smyth、Smitt等的相似之处。但在这里,模糊搜索指的是离散的、无序的搜索关键词。看下面的搜索,我的关键字是“atdirgo156”,搜索结果是“app/go/test/fixedbugs/issue15609.dir/call_amd64.s”,可以看到结果顺序不对关键词的有序排列为什么要使用模糊查找器让该工具像灵魂一样节省您的宝贵时间。投入更少,实际做的更多。最有名的fizzyfinder当然是FZF了,韩国大神JunegunnChoi写的所有小玩意都让人惊叹,证明了一个道理:大师出品的产品质量是有保证的。为什么选择FZFFZF很酷,它是一个用Go编写的组合命令行工具,它异步运行速度非常快,可以处理非常大数量级的数据而不影响调用工具,它可以在很多方面帮助你,不仅是它用于查找文件方便移植(无需信任),窗口配置灵活,vim集成FZF定位FZF只是一个模糊搜索的命令行工具,需要与其他工具配合使用,其输入必须从其他获取tools,它的输出一般也会发送给其他工具。什么样的工具可以方便的与FZF配合使用?目前比较多的工具如下:find(目录搜索)grep(文本搜索)ag(文本搜索)fd(目录搜索)ripgrep(文本搜索)最后两个是最新的search中的两个菜鸟应该是目前最快。如何配合ripgrep使用可以设置使用rg获取文件列表exportFZF_DEFAULT_COMMAND='rg--files--no-ignore--hidden--follow--glob"!{.git,node_modules}/*"2>/dev/null'exportFZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"exportFZF_ALT_C_COMMAND="rg--sort-files--files--null2>/dev/null|xargs-0dirname|uniq"你可以写letgin.vimrc:rg_command='\rg--column--line-number--no-heading--fixed-strings--ignore-case--no-ignore--hidden--follow--color"always"\-g"*.{js,json,php,md,styl,jade,html,config,py,cpp,c,go,hs,rb,conf}"\-g"!{.git,node_modules,vendor}/*“'命令!-bang-nargs=*Fcallfzf#vim#grep(g:rg_command.shellescape(),1,0)所以你可以在vim中输入:F如何使用rvwithfd也可以设置用fd获取文件列表,因为fd和rg的走查代码是共享的,所以速度基本一样"$FZF_DEFAULT_COMMAND"exportFZF_ALT_C_COMMAND="fd--typed--color=never"注意,如果用时间来比较rg和fd的速度,往往会得出rg比fd快的结论。其实这是因为fd会将Color输入如果对比fd--typef--color=never和rg--files结果,结果基本一致,配合各种shell。比如下面进入选中文件所在的文件夹#cdf-cd进入选中文件的目录cdf(){localfilelocaldirfile=$(fzf+m-q"$1")&&dir=$(dirname"$file")&&cd"$dir"}例如执行历史命令fh(){eval$(([-n"$ZSH_NAME"]&&fc-l1||history)|fzf+s--tac|sed's/*[0-9]**//')}例如checkoutgitbranch#fbr-checkoutgitbranch(包括远程分支),按最近提交排序,限制30个最后分支fbr(){local分支分支分支=$(gitfor-each-ref--count=30--sort=-committerdaterefs/heads/--format="%(refname:short)")&&branch=$(echo"$branches"|fzf-tmux-d$((2+$(wc-l