在 Vim 中的文件中进行模糊查找

在 Vim 中的文件中进行模糊查找

我喜欢使用 Vim 中的 Command-T 插件对文件名进行模糊搜索。我非常喜欢它,以至于我开始想在打开的缓冲区中对任意字符串进行同样的模糊搜索。

例如,如果我正在编辑包含类似选择器的 CSS 文件#support-main .question .answer-rating,我现在可以通过键入/support-main .question来找到该行。

我希望能够调用模糊查找器并简单地键入一些内容,例如supmaique查找同一行(以及其他行)。我知道我可以键入/sup.*mai.*que相同的效果,但键入.*'s 会分散我的注意力。

有没有办法做到这一点?

答案1

最新的 vim Ctrl-P 插件中有“line”扩展(控制键) 可以进行模糊线搜索。您需要手动启用扩展。这是我的配置.vimrc

let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlPLastMode'
let g:ctrlp_extensions = ['buffertag', 'tag', 'line', 'dir']

之后,按下 调Ctrl-p出菜单,然后按Ctrl-f几次直到线路模式打开。现在输入模糊字符串:

在此处输入图片描述

更新日期:2014 年 2 月 27 日

我目前正在使用的另一种解决方案是使用团结为了进行模糊线搜索,您需要稍微调整一下 unite:

call unite#filters#matcher_default#use(['matcher_fuzzy'])
call unite#filters#sorter_default#use(['sorter_rank'])
call unite#custom#source('file,file/new,buffer,file_rec,line', 'matchers', 'matcher_fuzzy')
nnoremap <C-k> :<C-u>Unite -buffer-name=search -start-insert line<cr>

现在按下Ctrl-k并输入:

在此处输入图片描述

顺便说一句,unite 还可以按名称进行模糊文件搜索。

更新日期:2016 年 8 月 3 日

进行线搜索的另一种方法是使用陣陣以及随行vim 插件。请参阅此处的安装说明:https://github.com/junegunn/fzf.vim#installation

安装 fzf 和 fzf.vim 后,您可以使用:BLines它在当前缓冲区中搜索行:

示例输出

您可能已经注意到,这并非完全是模糊搜索,这意味着我需要使用空格。这可能对您不起作用。

答案2

并非完全符合您的要求,但set incsearch您的模式会在您输入时进行匹配。这实际上不是模糊匹配,但感觉有点类似。

相关内容