2009-02-21 20 views
111

quiero abrir un archivo en Vim como en Eclipse usando Ctrl +Shift +R, oa través de la + N opción Ctrl de relleno automático. Invoque un atajo de teclado, escriba el nombre/patrón de archivo y elija entre todos los nombres de archivos coincidentes.Acceso directo para abrir el archivo en Vim

Sé que la apertura de lo que normalmente les gusta:

:tabe <filepath> 
:new <filepath> 
:edit <filepath> 

El problema aquí es que tengo que especificar toda la ruta de archivo en estos casos.

+0

¿La crema cuenta? – Hai

+1

Tenga en cuenta que los comandos sugeridos tienen un efecto diferente ': tabe' abrirá el archivo en una nueva pestaña,': new' dividirá horizontalmente la ventana, y ': edit' cerrará el archivo actual antes de abrir el nuevo. –

Respuesta

55

Hace poco se enamoró de fuzzyfinder.vim ... :-)

: FuzzyFinderFile le permitirá abrir archivos escribiendo nombres parciales o patrones.

6

¡Use pestañas, funcionan al ingresar rutas de archivos en el modo de escape vim!

12

a menos que me falta algo,: el nombre del archivo es la forma más rápida que he encontrado.

Puede usar la pestaña para autocompletar el nombre del archivo también.

+0

¿No es ': e' un atajo para': editar'? – dirkgently

+0

@dirkgently, lo es. Sigue siendo un atajo, como sugiere el título de esta pregunta, pero no creo que sea lo que el que pregunta está buscando. – strager

+0

Para mí, la función de autocompletar no funciona para: e. Además, no siempre deseas buscar un nombre de archivo que empiece por algo, sino más bien una palabra intermedia en un nombre de archivo. – drozzy

25

Usted puede buscar un archivo en la ruta actual utilizando **: pestaña

:tabe **/header.h 

Hit para ver varias terminaciones si hay más de una coincidencia.

+0

Intenté usar esto, pero esto es muy lento. Quiero decir que mi aplicación es grande y el editor dejó de funcionar por algún tiempo. ¿Conoces alguna configuración para aumentar el rendimiento y la velocidad del editor? – Techmaddy

+1

Buena respuesta. Use algo como ': tabe **/* der.h' si no recuerda el nombre completo del archivo. – ziiweb

4

Si usted tiene etiquetas (y debe), puede abrir un archivo desde la línea de comandos con sólo el nombre de la clase o función método o C, con "vim -t DBPlaylist", y dentro de vim con ": tag ShowList".

1
  • puede utilizar (wildmenu conjunto)
  • pestaña se pueden utilizar para autocompletar nombres de archivos
  • también se puede utilizar la concordancia, por ejemplo: e p*.dat o algo por el estilo (como en el viejo' DOS)
  • también podría: examinar confirmar e (para una ventana gráfica)

  • pero también debería especificar qué versión de vim está utilizando y cómo funciona esa cosa en emacs. Tal vez podríamos encontrar una alternativa vim exacta.

3

Si está editando archivos en un directorio común, puede :cd a ese directorio, a continuación, utilizar :e sólo en el nombre de archivo.

Por ejemplo, en lugar de:

:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb 
:sp /big/long/path/that/takes/a/while/to/type/or/tab/complete/other_thingy.c 
:vs /big/long/path/that/takes/a/while/to/type/or/tab/complete/one_more_thingy.java 

Usted puede hacer:

:cd /big/long/path/that/takes/a/while/to/type/or/tab/complete/ 
:e thingy.rb 
:sp other_thingy.c 
:vs one_more_thingy.java 

O, si ya tiene un archivo en el directorio deseado abierta, puede utilizar la abreviatura % para el nombre de archivo actual, y recortarlo en el directorio actual con el modificador :h (:help :_%:):

:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb 
:cd %:h 
:sp other_thingy.c 
:vs one_more_thingy.java 

Y, como han dicho otros, puede completar con pestañas los nombres de archivos en la línea directa (consulte :help cmdline-completion para obtener más información).

8

Uso un par de atajos en mi archivo .vimrc (la sintaxis exacta a continuación).

Se basan en el hecho de que en el 90% de los casos, deseo abrir otro archivo en el mismo directorio que el que estoy editando, o en un directorio que esté muy cerca de la jerarquía. archivo editado.

Esto es lo que los comandos no hacen:

,cd: Cambiar el directorio de trabajo actual al directorio que el archivo actual que se está editando está en

,e:. Abre un archivo con el trabajo actual directorio ya completado, por lo que debe especificar solo el nombre del archivo.

Ponga estos en su .vimrc:

map ,e :e <C-R>=expand("%:p:h") . "/" <CR> 

map ,cd :cd %:p:h <CR> 

Aquí es una secuencia de eventos:


  1. está editando un archivo llamado test.java en "/ home/prog "
  2. ,cd -> Directorio de trabajo actual ahora se convierte en "/ home/PROG"
  3. ,e -> Se expande a ": e/home/PROG" para que sólo puede rellenar el nombre del archivo , dicen test.h.

  1. ,e -> Se expande al ": e/home"
  2. tab -> Ciclo a través de los subdirectorios de/home
  3. enter ->cd al directorio que quiere decir/home/prog
  4. ,e -> Se expande a ": e/home/prog"
3

Conozco tres complementos que permiten abrir archivos, admitir el autocompletado y no requieren ingresar el nombre completo de la ruta del archivo (s) para abrir (siempre que los archivos estén debajo de uno de los directorios de &path opción vim):

Últimamente, he visto otro complemento con una función similar, pero no recuerdo el nombre.

Pronto,: es probable que la finalización automática de la compatibilidad sea compatible: actualmente, en la lista de distribución vim_dev están circulando parches sobre este tema.

132

Lo que normalmente hago es e . (e-space-dot) que me da un directorio actual navegable - entonces puedo / - buscar fragmentos de nombre, como encontrar una palabra en un archivo de texto. En general, creo que es lo suficientemente bueno, simple y rápido.

+15

No necesita espacio, lo que ahorra un 25% adicional de tipeo. (': e'). –

+55

No necesita el punto si usa mayúscula e, p. : E drozzy

+2

@drozzy Esto sucede con vim :-) – DerMike

1

Se ha mencionado FuzzyFinder, sin embargo, me encanta el comportamiento tipo textmate del complemento FuzzyFinderTextmate, que amplía el comportamiento para incluir todos los subdires.

Asegúrese de estar utilizando la versión 2.16 de fuzzyfinder.vim - Las versiones más avanzadas rompen el complemento.

0

Instalé FuzzyFinder. Sin embargo, la limitación es que solo encuentra archivos en el directorio actual. Una solución para eso es agregar FuzzyFinderTextmate. Sin embargo, según los documentos y comentarios, eso no funciona de manera confiable. Necesita la versión correcta de FuzzyFinder y necesita que su copia de Vim se compile con el soporte de Ruby.

Una solución alternativa que estoy probando ahora es abrir todos los archivos que probablemente necesite al comienzo de la sesión de edición. Por ejemplo, abrir todos los archivos en directorios clave ...

:args app/** 
:args config/** 
:args test/** 
etc... 

(Esto significa que tendría posiblemente decenas de archivos abiertos, sin embargo hasta el momento todavía parece funcionar bien.)

Después de eso, se puede utilizar en el modo de memoria intermedia FuzzyFinder y actuará algo así como el acceso directo del command-o TextMate ...

:FuzzyFinderBuffer 
+0

¿Está seguro? Tengo algunas configuraciones en mi .vimrc, busque "g: fuf_abbrevMap". Debo haber encontrado un ejemplo en la documentación. Cuando escribo el atajo, escribo una abreviatura como "web:" y buscará todos los archivos dentro de una carpeta de mi elección. Mi problema en realidad es que por alguna razón ya no abre archivos, en su lugar veo [NEW DIRECTORY] en la barra de estado. Pero tengo el mismo problema con: o, parece no estar relacionado con fuf. –

3

Esto no es exactamente lo que estás buscando, pero es bueno en muchos casos (aunque no todos) .

Si Vim abierta y hay un nombre de un archivo en la memoria intermedia, se puede poner el cursor en ese nombre de archivo y escriba gf. Esto abre el archivo cuyo nombre está debajo del cursor en el mismo buffer. Es lo mismo que

:e CTRL+rCTRL+w

+0

He presionado gf y ahora he abierto el nuevo archivo que está debajo del cursor. ¡Ahora cómo volver al archivo original! – vrbilgi

+0

@ user430294: Está abierto en un búfer diferente. Use ': b oldname' –

29

:find es otra opción.

Abrí vim desde la raíz de mi proyecto y configuré el path allí.

Entonces, puedo abrir archivos que se encuentran en cualquier parte del árbol usando:

:find **/filena<tab> 

Tab autocompletará a través de diversos partidos. (** le dice que busque recursivamente a través de la ruta).

+0

No encuentro': find' útil ya que para obtener la ruta relativa al directorio de trabajo. Ver la pregunta y responder @romainl aquí: http://stackoverflow.com/questions/28224168/vim-using-find-how-to-get-the-path-relative-to-the-working-directory/28225117#28225117 . Encuentro una respuesta @strager más interesante para facilitar la ruta relativa al directorio de trabajo. – ziiweb

8

También hay command-t que considero que es el mejor del grupo (y los he probado todos). Es una molestia menor instalarlo pero, una vez que está instalado, es un sueño de usar.

https://wincent.com/products/command-t/

+1

Es posible que también desee probar ctrlp.vim (https://github.com/kien/ctrlp.vim). Es básicamente lo mismo que Command-T, pero escrito en Vimscript puro. (En mi humilde opinión es más fácil de usar también) – datentyp

13

considerar el uso de CtrlP plug-in.

Se incluye en Janus Distributive.

Le permite buscar archivos en el directorio actual, abrir búferes o los archivos usados ​​más recientemente usando "coincidencia difusa" o expresión regular.

+1

Fácil instalación de CtrlP y hasta ahora parece funcionar muy bien. –

+1

realmente lo uso como parte de la distribución de Janus. – Alexey

0

Con ctags exuberantes, puede crear archivos de etiquetas con información del fichero:

ctags --extra=+f -R * 

A continuación, abrir el archivo de VIM con

:tag filename 

también puede utilizar <tab> autocompletar nombre de archivo.

Cuestiones relacionadas