在 Vim 中的文件中模糊查找

ada*_*que 23 vim

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

例如,如果我正在编辑一个包含像 选择器的 CSS 文件#support-main .question .answer-rating,我目前可以键入/support-main .question以找到该行。

我希望能够调用一个模糊的查找器并简单地输入一些东西supmaique来找到相同的行(等等)。我知道我可以输入/sup.*mai.*que以获得相同的效果,但是输入.*'s 会分散我的注意力。

有没有办法做到这一点?

小智 25

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

let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlPLastMode'
let g:ctrlp_extensions = ['buffertag', 'tag', 'line', 'dir']
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

2014 年 2 月 27 日更新

我目前自己使用的另一种解决方案是使用unite。为了进行模糊线搜索,您需要稍微调整 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>
Run Code Online (Sandbox Code Playgroud)

现在按下Ctrl-k并输入:

在此处输入图片说明

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

2016 年 8 月 3 日更新

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

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

样本输出

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