2008-12-17 15 views
7

Una delle mie funzioni preferite vim è la capacità di farevim percorso var, escludendo dirs da ** corrispondenza

set path=/my/project/root/** 

e quindi utilizzare

:find SomeClassFile.java 

L'unico problema è, ho alcune generato directory a quel livello che non posso spostare e desidero escludere da tali ricerche. Non riesco a capire come escludere quelle dirs. Qualcuno sa come/se questo può essere fatto?

risposta

3

Sono abbastanza sicuro che non è possibile escludere le cose da una ricerca "**". Invece, è possibile specificare tutte le sottodirectory sotto quella che Non includono generato il codice, come

set path=/my/project/root/src/**,/my/project/root/com/**,/my/project/root/foo/** 
+0

Sfortunatamente, questo è quello che ho finito per fare. – davetron5000

+0

È ancora così nel 2017? –

2

Io non conosco un modo utilizzando la sintassi vim, ma è possibile creare voi stessi un .vimrc. proj file (mia convenzione di denominazione) e riempirlo con quello che vuoi che riguarda quel progetto, quindi 'sorgente' esso.

Quindi, si avrebbe la seguente in /my/project/root/.vimrc.proj (usando l'esempio di Paolo Tomblin):

set path =/mio/progetto/root/src/**,/il mio/progetto/root/com/**,/mio/progetto/root/foo/**

E poi dall'interno di vim:

: fonte /my/project/root/.vimrc.proj

Fondamentalmente, una volta impostato il file, sarebbe un numero simile di tasti per impostare il percorso del progetto. Naturalmente, puoi anche inserire altre impostazioni specifiche del progetto, come ad esempio mappature di cscope o altro.

Certamente, lascia un 'dropping' nel file system ma molti altri ambienti creano file di progetto.

1

L'opzione & Wildign deve essere gestita. Tuttavia, AFAIK, non è così. Ho emesso un bug report su questo argomento, ma da allora non ho visto nessuna patch.

Nel frattempo, ho sviluppato una funzione globpath che ignora i percorsi contenenti pattern indesiderati (come/CVS/e.g.) e utilizzo questa funzione nei miei comandi find-like.

+1

funziona con una versione di Vim recente – brillout

0

Se siete su un sistema unix-like, è possibile utilizzare backticks di eseguire uno script da riga di comando in questo modo:

:e `find . -name foo.java -print` 

Così si potrebbe scrivere il proprio script per escludere qualsiasi directory che si desidera. Ho fatto una cosa simile per escludere le directory .svn da :grep.

Vedere :h backtick-expansion in vim per ulteriori informazioni.

1

Penso che sia possibile escludere le cose da una ricerca "**" impostando la variabile wildignore.

esempio:

set wildignore+=*.swp,*.bak,*.class 

o qualcosa link this:

set wildignore+=*/node_modules/*,*/public/lib/* 

Ora, se si utilizza il comando find, non sarebbe cercare in queste directory.

Problemi correlati