Problema: ctrlp tarda mucho en indizar el path actual.
Podemos resolver todo esto y mas con tan solo instalar fzf
Es remarcable la poca configuracion que necesitamos con este cambio:
map <c-p> :Files<cr>Listo, con esto tendremos la misma funcionalidad que nos brindaba CtrlP con
algunas mejoras, como no tener que esperar a que se llene la lista de
sugerencias para poder interactuar con el plugin!
Podemos intentar optimizar la busqueda de archivos dentro de ctrlp desde varios puntos:
Una opcion es instalar ag e indicarle a ctrlp que lo utilice, esto lo
logramos asi:
let g:ctrlp_user_command = 'ag %s -i --nocolor --nogroup
\ --ignore .git
\ --ignore .svn
\ --ignore .hg
\ --ignore .DS_Store
\ --ignore "**/*.pyc"
\ -g ""'ag por defecto lee archivos de exclusion de VCS's como el .gitignore lo
cual agiliza bastante la busqueda considerando que normalmente en dichos
archivos vamos a agregar librerias externas o assets compilados.
Una consideracion a tener es el formato de los patrones que especificamos en
dichos archivos.
Extraido de la documentacion de git:
... patterns match relative to the location of the .gitignore file. ...
Con esto apunto especificamente a la defnicion de directorios para ignorar, ej:
supongamos que queremos excluir la carpeta public y todos sus contenidos, el
patron mas comun seria /public/*. si bien esto funciona perfectamente para
git, cuando ag lea la linea lo tomara como que debe excluir todo lo que este en
pubic en el root del file system en vez de considerar la carpeta perteneciente
a nuestra app. No hay problema, como acabamos de leer de la documentacion de
git, los patrones son relativos, con lo cual /public/* puede ser cambiado por
public/* si ningun tipo de problema para git
Ya que estamos con vim podemos tirar un substitute simple que se encarga de
borrar la barra inicial de aquellas lineas que corresponda guardando el patron
restante. Abrimos nuestro .gitignore y ejecutamos lo siguiente:
:%s/^\/\(.*\)/\1Algun otro dia podemos darle una revisada a substitue y las expresiones
regulares de vim, pero ahora sigamos con ctrlp que ya nos falta poco
Hasta ahora agilizamos como se indiza el directorio , todavia podemos mejorar el matcheo de los archivos en si. Para esto vamos a instalar otro plugin, el py-matcher y nuevamente vamos a indicarle a vim que reemplace su comportamiento por defecto con el de este:
let g:ctrlp_match_func = {'match': 'pymatcher#PyMatch'}Listo nomas, con eso ya deberiamos poder saltar entre archivos tan rapido que ni nos damos cuenta, de hecho, la ganancia de velocidad es tanta (en mi experiencia) que podemos obligar a ctrlp a no utilizar cache y asi tener siempre una lista actualizada.
let g:ctrlp_use_caching = 0