Fuzzy trova nel file in Vim


21

Adoro usare il plugin Command-T in Vim per fare ricerche confuse per i nomi dei file. Mi piace così tanto che ho iniziato a voler fare le stesse ricerche fuzzy per stringhe arbitrarie all'interno di un buffer aperto.

Ad esempio, se sto modificando un file CSS che contiene un selettore come #support-main .question .answer-rating, attualmente posso digitare /support-main .questionper trovare quella riga.

Mi piacerebbe essere in grado di invocare un fuzzy finder e semplicemente digitare qualcosa di simile supmaiquea trovare quella stessa linea (tra gli altri). So di poter digitare /sup.*mai.*queper lo stesso effetto ma digitando .*"s" si interrompe la mia concentrazione.

C'è un modo per fare questo?

Risposte:


23

C'è l'estensione "line" nell'ultimo plug-in Ctrl-P per vim ( ctrlp ) che può eseguire ricerche fuzzy line. È necessario abilitare l'estensione manualmente. Ecco la mia configurazione in .vimrc:

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

Dopodiché premi Ctrl-pper visualizzare il menu, quindi premi Ctrl-fpiù volte fino a quando la modalità linea è attiva. Digita ora la tua stringa fuzzy:

inserisci qui la descrizione dell'immagine

AGGIORNAMENTO 27 febbraio 2014

Una soluzione alternativa che sto attualmente usando me stesso sarebbe quella di utilizzare unire . Per eseguire la ricerca di linee fuzzy devi sintonizzare leggermente l'unione:

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>

Ora premi Ctrl-ke digita:

inserisci qui la descrizione dell'immagine

A proposito, unite può anche eseguire ricerche di file fuzzy per nome.

AGGIORNAMENTO 03 Agosto 2016

Un altro modo di fare la ricerca di linea è usare fzf insieme al plugin vim di accompagnamento . Consulta le istruzioni di installazione qui: https://github.com/junegunn/fzf.vim#installation

Dopo aver installato sia fzf che fzf.vim, è possibile utilizzare :BLinesper cercare le righe nel buffer corrente:

Uscita campione

Potresti aver notato che non è esattamente la ricerca fuzzy che significa che ho bisogno di usare gli spazi. Questo potrebbe non funzionare.


Aggiunto unire come soluzione alternativa.
baltazar,

Aggiunto fzf come soluzione alternativa.
baltazar,

1

Non esattamente quello che vuoi, ma con il set incsearchtuo modello è abbinato mentre digiti. Non è davvero una corrispondenza sfocata ma la sensazione è simile.


Ah sì. incsearchè fantastico, ma non quello che sto cercando.
adamesque,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.