2008-12-17 15 views
7

Una de mis características favoritas vim es la capacidad de hacerruta vim var, con exclusión de directorios de juego **

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

y luego usar

:find SomeClassFile.java 

El único problema es, Tengo algunas directorios generados en ese nivel que no puedo mover y deseo excluir de dichas búsquedas. Parece que no puedo entender cómo excluir esos directorios. ¿Alguien sabe cómo/si esto puede hacerse?

Respuesta

3

Estoy bastante seguro de que no puede excluir cosas de una búsqueda "**". En su lugar, se podría especificar todos los subdirectorios que uno que no lo hacen incluyen código generado, como

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

Lamentablemente, esto es lo que terminé haciendo. – davetron5000

+0

¿Sigue siendo así en 2017? –

2

No sé de una manera mediante la sintaxis de vim, pero se puede crear usted mismo un .vimrc. archivo proj (mi convención de nombres) y llénelo con lo que quiera que pertenezca a ese proyecto, luego 'fuente'.

Por lo tanto, usted tendría la siguiente en /my/project/root/.vimrc.proj (utilizando el ejemplo de Pablo Tomblin):

trayectoria del sistema =/mi/proyecto/root/src/**,/mi/proyecto/root/com/**,/mi/proyecto/root/foo/**

Y luego desde dentro de vim:

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

Básicamente, una vez que haya configurado el archivo, habrá un número similar de teclas para establecer la ruta del proyecto. Por supuesto, también puede colocar allí otras configuraciones específicas del proyecto, como mapeos de cscope o lo que sea.

Es cierto que deja una 'caida' en el sistema de archivos pero muchos otros entornos crean archivos de proyecto.

1

Debe tenerse en cuenta con la opción wildignore &. Sin embargo, AFAIK, no es así. Emití un informe de error sobre este tema, pero no he visto ningún parche desde entonces.

Por el momento, he desarrollado una función globpath -like que ignora las rutas que contienen patrones no deseados (como/CVS/por ejemplo), y uso esta función en mis comandos de búsqueda.

+1

funciona con una versión vim reciente – brillout

0

Si estás en un sistema de tipo Unix, puede utilizar acentos abiertos para ejecutar un script de línea de comandos así:

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

Así que usted puede escribir su propio guión para excluir directorios lo desea. He hecho algo similar para excluir directorios .svn de :grep.

Ver :h backtick-expansion en vim para obtener más información.

1

Creo que puede excluir cosas de una búsqueda "**" estableciendo la variable wildignore.

por ejemplo:

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

o algo enlace siguiente:

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

Ahora bien, si se utiliza find comando, sería no buscar en esos directorios.

Cuestiones relacionadas