2010-08-12 24 views
6

¿Cuál es la forma más sencilla de "saltar a un archivo en algún lugar de mi árbol fuente por nombre"? Por ejemplo, si estoy trabajando con "libfoo" que contiene libfoo/foo/foo.py, me gustaría poder saltar a foo.py desde cualquier lugar dentro de libfoo/** [0].Vim: comando simple "saltar al archivo"?

¿Posiblemente alguna forma de hacer esto con un archivo de etiquetas?

[0]: es decir, libfoo/ y sus subdirectorios.

Respuesta

6

la salida command-t, FuzzyFinder o FuzzyFinder_Textmate

Personalmente, encuentro de comandos-T tiene la mejor interfaz de usuario, pero FuF_Textmate que es mejor para obtener rápidamente al lugar correcto en proyectos muy grandes (por eso lo uso después de probar todos 3)

Tenga en cuenta que fuzzyfinder_textmate no ha sido mantenido por su autor original, por lo que es posible que deba buscar en la pestaña gh network para encontrar quién tiene la rama más actualizada. también tenga en cuenta que es un poco difícil de instalar.

+0

utilizo FuzzyFinder_Textmate ya por su salto de etiqueta ... pero es un poco molesto usar 'file' porque, si estoy en' libtal/bar/baz/', entonces tengo tengo que escribir '\ f ../../../**/ foo.py'. –

+0

Posiblemente hay alguna forma de configurarlo para que use un directorio como raíz predeterminado. –

+0

por lo que sé, fuzzyfinder_textmate solo tiene nombres de archivo, y siempre comenzará en el lugar donde se haya abierto vim (lo que en realidad puede ser un problema a veces). tal vez estás usando fuzzyfinder? –

14

Añadir ** es que vim separada por comas path variable (no ruta del sistema) y si estás en algún directorio padre de la utilización del proyecto:

:find foo.py 
+1

te votó porque encontrar es definitivamente más simple que instalar y configurar un complemento. –

+0

Hrm, eso no parece hacer lo que quiero ... Si mi CWD es 'libfoo /', 'find foo.py' no funciona. Posiblemente ': find' no es recursivo? –

+0

¿Qué le dice: ruta establecida? El mío es 'path =., ** ,,', que creo que es el predeterminado. Definitivamente recurre para mí. : encuentre la contraseña en/find/etc/passwd. –

2

Se puede utilizar de Vim pestaña terminación de nombres de archivo en conjunción con la expansión de directorio recursivo **.

p. Ej. escriba: :e libfoo/**/foo.py y presione TAB. Esto buscará desde el directorio libfoo para encontrar un archivo que coincida. Si hay más de una coincidencia, puede recorrerlas con la tecla TAB. Cuando encuentre el que desea, presione intro para completar el comando y editar el archivo.

Para obtener más información acerca de la ** coincidencia haga :h starstar. Requiere una versión de Vim compilada con la opción + path_extra.

Si ya ha editado el archivo, también puede buscar en las memorias intermedias las coincidencias de nombres parciales con el comando :b name. p.ej. :b foo.py<TAB> se ampliará a un nombre de búfer que tiene 'foo.py' en cualquier lugar. nótese bien coincide con la ruta completa, por lo que :b foo<TAB> haría coincidir todos los búferes con los archivos del directorio libfoo.

-1
map <S-F12> :execute "!start explorer \"" . expand("%:p:h") . "\""<CR> 

pone en marcha una ventana del explorador en el directorio del archivo que se está utilizando

+0

Lo siento, no estoy seguro de ver cómo eso es relevante para la pregunta ... –

0

mira esto:

https://github.com/zhchang/quick_file

características únicas: 1. que no es necesario saber exactamente dónde está, siempre que esté en uno de los subdirectores 2. no tiene que recordar el nombre completo, los fragmentos harán 3. irá a la coincidencia más superficial, pero con más fragmentos de la ruta suministrada, coincidirá más profundamente.

1

ctrlp.vim

ruta completa difusa archivo, búfer, MRU, etiqueta, ... buscador de Vim.

  • Escrito en Vimscript puro para MacVim, gVim y Vim 7.0+.
  • Compatibilidad total con la expresión regular de Vim como patrones de búsqueda.
  • Monitoreo de archivos usados ​​más recientemente (MRU).
  • Buscador de raíz del proyecto incorporado.
  • Abre varios archivos a la vez.
  • Crear nuevos archivos y directorios.
  • Extensible.

Lo puede encontrar en https://github.com/ctrlpvim/ctrlp.vim.

0

ctags --extra=f . crea etiquetas con el mismo nombre que los archivos que apuntan a la primera línea:

ctags -R --extra=f . 

a continuación, puedes hacer:

:tag file_na 

y la ficha completa de distancia.

Mencionado en: Vim and ctags: tag filenames

Cuestiones relacionadas