Sé que puedo completar nombres de archivo / rutas desde el directorio actual usando ctrl + x, ctrl + f ( compl-filename
). Eso funciona muy bien en combinación con set autochdir, que cambia las actualizaciones del directorio actual al directorio del búfer activo.
Sin embargo, comencé a usar airblade/vim-rooter
para hacer del directorio actual la carpeta "proyecto". Ahora la finalización del nombre de archivo siempre comienza desde la carpeta del proyecto.
La pregunta: ¿Hay alguna forma de hacer que la finalización del nombre de archivo use el directorio del búfer activo en lugar del directorio actual? ¿O alguna otra solución?
autocompletion
Rafael Barbosa
fuente
fuente
path
). Depende de cuál sea su uso previsto para vim-rooter. Dependiendo de lo que desee de él, podríamos usar otros complementos. Aparte: uso youcompleteme, que completa las rutas desde el directorio del búfer actual si comienzas a escribir./
. Ver reddit.com/r/vim/comments/216jdd/…Respuestas:
Como @muru mencionó, no hay opciones para configurar el directorio desde el cual completar la ruta y los nombres de archivo. Siempre usa el directorio de trabajo de la ventana.
He escrito un par de funciones y asignaciones para ayudar con esto. Detrás de escena, cambian el directorio de trabajo local (usando
:lcd
) temporalmente, luego restauran el directorio de trabajo anterior cuando terminan.Elefante
Por razones desconocidas para mí, he llamado a este micro-plugin Elephant .
Aquí está el código (copiado de mi configuración de Vim en GitHub ):
Cómo usarlo
El uso de estas asignaciones se realiza en 3 pasos.
1. Invocar el mapeo
En el modo de inserción o en el modo de línea de comandos, invoque el mapeo utilizando
<C-R><C-E>
.2. Elija un directorio
Escriba un solo carácter para elegir desde qué directorio raíz desea completar. El código anterior proporciona dos tipos de raíces:
f
- El directorio en el que reside el archivo actual (búfer)p
- El directorio base del proyecto Git al que pertenece el archivo actual3. Ingrese la ruta o el nombre del archivo
Se le pedirá que ingrese la ruta o el nombre de archivo relativo al directorio especificado, con finalización disponible. Presione
Enter
cuando haya terminado.Algunas notas
<C-X><C-F>
hace; en su lugar, escribirá la ruta o el nombre del archivo en la línea de comandos (donde:
van los comandos). Al presionarEnter
, la ruta se insertará en el búfer.Enter
y olvidas que aún tienes que golpearEnter
para emitir cualquier comando que estés escribiendo.g:elephant_map
.fuente