2010-03-03 13 views
37

Sto cercando un modo per far sì che Vim abbia la possibilità di aprire un file tramite la ricerca fuzzy del suo nome.Apertura di file in Vim utilizzando Fuzzy Search

Fondamentalmente, voglio essere in grado di definire un progetto una volta, e quindi avere un collegamento che mi darà un posto dove digitare un nome di file, e corrisponderà se le lettere corrispondono.

Questo tipo di funzionalità esiste nella maggior parte degli editor che ho visto, ma per la vita di me non riesco a capire come convincere Vim a farlo.

Nota che sto cercando qualcosa che non sia mi chieda di sapere dove si trova un file nella mia directory. Voglio solo essere in grado di aprirlo dal nome del file, indipendentemente da ciò che directory è nella.

Grazie

risposta

51

Ci sono due ottimi plugin per questo.

ctrlp:

  • scritto in puro VimL
  • Opere praticamente ovunque
  • Supporta cercatori personalizzati per migliorare le prestazioni
  • più popolari ricerca fuzzy plug-in per Vim

Command-T:

  • Scritto in C, VimL e Ruby
  • veloce fuori dalla scatola
  • Richiede +ruby supporto in Vim
  • raccomanda versione di Vim> = 7.3

EDIT:

Io uso CtrlP con ag come cercatore personalizzato ed è incredibilmente veloce (anche su progetti enormi) e molto portabile.

Un esempio di utilizzo ag con CtrlP:

if executable('ag') 
    " Use Ag over Grep 
    set grepprg=ag\ --nogroup\ --nocolor 

    " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore 
    let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' 
endif 
+3

Da quando ho postato questa domanda, sono passato a usare ctrlp, così come molti altri Vim'ers. Ora lo considero il de-factor file-switcher-plugin (con Command-t close behind). –

+2

Utilizzare ctrlp con un comando finder personalizzato, ad es. ack o ancora meglio ag (il ricercatore d'argento). Ciò velocizzerà la tua ricerca rispetto a command-t anche se abiliti il ​​comando c find in esso. La mia esperienza con il guardiano era un po 'lenta –

+0

Qual è il punto di 'set grepprg'? – hasen

2
+0

Ho guardato questo, ma non mi sembra di fare quello che volevo (sembra che non cerca per tutti i file nella directory) . Lo sto configurando in modo errato? –

+1

Probabilmente lo sei. Normalmente, tutti i file in una directory e tutte le sue sottodirectory sono inclusi. –

+0

Inoltre: http://stackoverflow.com/questions/1894614/vim-fuzzyfinder-usage-tips-gotchas-how-can-one-make-use-of-this-plugin/1897075#1897075 –

3

CommandT per Vim è molto caratteristica paragonabile come in TextMate. Il mio flusso di lavoro è ora

1) aprono MacVim

2): cd ~/my_project

3) (ho questo tracciato, come descritto nella Guida di installazione)

4) Cv il file per aprire il file in una divisione verticale o CR per aprire una nuova divisione orizzontale.

5) per chiudere la scissione, uso: bd (tampone cancella)

6) per passare ad un altro buffer, ho installato BufferExplorer, quindi basta \ essere selezionare

Questo flusso di lavoro è paragonabile a TextMate, ci vuole un po 'per abituarsi e sto ancora imparando.

+0

Questo è fantastico. Ci sono plugin come questo che non richiedono Ruby e la compilazione? Essere su Windows molto, sarebbe semplicemente fantastico. – drozzy

+0

Che ne dici di https://github.com/Shougo/unite.vim –