Fuzzy encontrar dentro do arquivo no Vim

18

Adoro usar o plugin Command-T no Vim para fazer pesquisas difusas de nomes de arquivos. Eu gostei tanto que comecei a querer fazer as mesmas buscas difusas por strings arbitrárias dentro de um buffer aberto.

Por exemplo, se eu estiver editando um arquivo CSS que contenha um seletor como #support-main .question .answer-rating , posso digitar /support-main .question para encontrar essa linha.

Gostaria de poder invocar um localizador difuso e simplesmente digitar algo como supmaique para encontrar a mesma linha (entre outras). Eu sei que posso digitar /sup.*mai.*que para o mesmo efeito, mas digitar .* quebra minha concentração.

Existe uma maneira de fazer isso?

    
por adamesque 15.02.2012 / 00:50

2 respostas

21

Existe uma extensão "line" no mais recente plugin Ctrl-P para o vim ( ctrlp ) que pode fazer pesquisa de linha difusa. Você precisa habilitar a extensão manualmente. Aqui está minha configuração em .vimrc :

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

Depois disso, pressione Ctrl-p para exibir o menu e, em seguida, pressione Ctrl-f várias vezes até que o modo de linha esteja ativado. Digite sua string fuzzy agora:

ATUALIZAÇÃO27defevereirode2014

Umasoluçãoalternativaqueestouusandonomomentoseriausar unir . Para fazer uma pesquisa de linha difusa, você precisa ajustar um pouco:

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>

Agora pressione Ctrl-k e digite:

Apropósito,ounitetambémpodefazerpesquisadearquivodifusapelonome.

ATUALIZAÇÃO03deagostode2016

Outramaneiradefazerumapesquisadelinhaéusar fzf junto com o acompanhamento vim plugin . Veja as instruções de instalação aqui: link

Depois de ter instalado o fzf e o fzf.vim, você pode usar :BLines para pesquisar linhas no buffer atual:

Você deve ter notado que não é exatamente o significado da pesquisa difusa que preciso usar espaços. Isso pode não funcionar em você.

    
por 05.07.2012 / 11:53
1

Não é exatamente o que você quer, mas com set incsearch seu padrão é correspondido enquanto você digita. Não é muito parecido, mas o sentimento é parecido.

    
por 15.02.2012 / 10:44

Tags