En el modo de inserción de Vim, ¿hay alguna forma de agregar el autocompletado de la ruta de archivo?

81

Escribo muchos scripts de shell y constantemente tengo que ingresar en rutas de archivo. Me pregunto si alguien conoce una forma de hacer que Vim autocomplete rutas de archivo mientras está en modo de inserción, al igual que cuando está en su shell favorito, presione la pestaña para completar la ruta del directorio o archivo.

Crédito adicional si puede obtener la CTRLDfuncionalidad del shell en el modo de inserción de Vim (es decir, para ver qué archivos / directorios están en la ruta actual).

Stephenmm
fuente
pregunta interesante, me encantaría saber la respuesta también :)
Jay Zeng
@stephenmm ¿Qué hace Ctrl-D en tu shell? En mi shell bash no hace nada cuando ingreso un texto, de lo contrario, cierre la terminal.
alhelal
@alhelal - Parece que CTRL-D mostraría los archivos y directorios en algún shell antiguo mío. Ya no veo ninguna funcionalidad CTRL-D.
Stephenmm

Respuestas:

162

Para completar el nombre de archivo omnidireccional, puede utilizar:

Ctrl- XCtrl-F

Christian C. Salvadó
fuente
11
Otro momento vim aha .... Gracias. No uso la pestaña en el modo de inserción de todos modos, así que agregué esto a mi .vimrc: imap <Tab> <CX> <CF>
stephenmm
4
Otro buen uso de <tab> en el modo de inserción es <cn>. Esto autocompletará la palabra que está escribiendo basándose en otras palabras en el archivo en el que está trabajando. Lo uso todo el tiempo cuando escribo nombres de variables o clases.
Derek
¿Hay alguna forma de influir en la ruta de búsqueda? Al agregar entradas #include en un archivo C, es posible que las rutas no sean relativas al lugar desde donde abrió el archivo.
Rob Bradford
@RobBradford prueba YouCompleteMe, si se le proporciona la información correcta (por ejemplo, uso .ycm_extra_conf.py generado por YCM-Generator, que usa mi sistema de compilación basado en cmake), muy bien autocompletará cualquier ruta en sus carpetas de inclusión.
Emile Vrijdags
Vim no se completa automáticamente cuando hay espacios en el nombre del archivo. ¿Hay alguna forma de solucionarlo?
Jean
19

Hay ctrl- x ctrl-f

:he compl-filename

Miguel
fuente
18

Para construir sobre @CMS y @michael excelentes respuestas

Cuando use la secuencia de comandos ctrl+ X ctrl+ f, mostrará una lista de archivos en el directorio actual. Paso un minuto buscando la tecla correcta para moverme hacia arriba y hacia abajo entre los diferentes nombres de archivo. Las teclas correctas son Ctrl-n y Ctrl-p. Puede usar casi cualquier otra tecla (como Space) para seleccionar y continuar escribiendo.

Además, si aún no se encuentra en el archivo / directorio que le gustaría insertar, puede bajar una estructura de árbol de archivos de la siguiente manera:

  1. Opcionalmente ingrese alguna parte del directorio. ¡Incluso puedes usar ../../por ejemplo!
  2. Presione ctrl+ X ctrl+ fy seleccione el primer elemento del árbol de la lista.
  3. A continuación, presione ctrl+ fnuevamente mientras el elemento correcto está resaltado para mostrar una lista del siguiente nivel en la estructura del árbol del directorio.

Puede seguir haciendo esto hasta que encuentre el directorio / archivo que le gustaría insertar en el documento.

Instantánea
fuente
6
En el paso 3, ¿quiso decir ctrl + x y ctrl + f? Debido a que solo ctrl + f no funciona para mí, hace lo mismo que ctrl + n. Por cierto, no funciona aquí si un directorio tiene espacios: /. ¿Conoces una solución?
Rojo
0

Experimenté un problema similar. Encontré una solución como:

    sudo apt-get install realpath

Y en VIM naviagte para archivar en modo normal escriba:

    :r !realpath /path/to/file

Cuando navega en modo sin insertar después de! Realpatch, puede usar nuestro botón de tecla.

¡VOILA! ¡TAB está funcionando de nuevo!

amonowy
fuente