El complemento Vim Ctrlp tiene una forma de ignorar globalmente ciertos nombres de carpetas. P.ej:
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
Sin embargo, tengo una regla de ignorar que es específica de un proyecto. Me gustaría algo más como un .gitignore
archivo.
¿Hay alguna manera de ignorar una carpeta específica en un proyecto específico sin modificar mi configuración global?
Respuestas:
Use un comando de listado personalizado
Ctrlp le permite decirle qué comando usar para obtener una lista de archivos en la carpeta. Entonces, si desea excluir cualquier cosa nombrada
beets.txt
, puede hacer:Eso es global, pero comienza a apuntar hacia la respuesta: proporcione su propio comando de shell.
Aún mejor, Ctrlp le permite suministrar múltiples comandos de shell con marcadores, lo que significa "si ve este marcador en el directorio raíz, use este comando".
Encontré esto
:help ctrlp
y lo modifiqué ligeramente en función del comentario del autor sobre un problema.Esto significa: "Si ve
.git
en la carpeta, usegit ls-files...
. De lo contrario, si ve.hg
, usehg --cwd...
, de lo contrario use un regularfind
".Entonces, para ignorar una carpeta específica en un proyecto, diseñe un comando que ignore esa carpeta, luego coloque un marcador único en ese proyecto para permitir que Ctrlp desee usar su comando especial aquí .
(En mi caso, en realidad quería ignorar los archivos que estaban allí
.gitignore
, por lo que elgit ls-files
comando anterior funciona para mí).fuente
Si está utilizando el backend de Silver Searcher para CtrlP (que es mucho más rápido), simplemente agregue un
.agignore
archivo al directorio de su proyecto en el mismo formato que.gitignore
:Alternativamente, mantenga un
~/.agignore
archivo global .Agregue el buscador de plata como backend con esto en su
.vimrc
fuente
if executable("ag") let g:ctrlp_user_command = 'ag %s -l --nocolor --depth 8 -g ""' endif
. El límite de profundidad es útil si accidentalmente presiono ctrl-p mientras edito un archivo en mi carpeta de inicio. Descubrí que la bandera oculta incluiría archivos en .git /Especifica archivos intencionalmente no rastreados en un archivo
Para resolver esto con un archivo como
.gitignore
(basado en la solución grep de Nathan), creé un archivo llamado.ctrlpignore
y puse los patrones que deberían ignorarse, separados por líneas:Y mi configuración ctrlp:
Quizás el
.gitignore
mismo se pueda usar para ignorar los archivos en ctrlp, sin necesidad de crear un nuevo archivo para hacer casi lo mismo.fuente
Como dijo Wagner Andrade , usar una separación
.ctrlpignore
sería una buena idea.Una configuración de vim más robusta y conveniente es la siguiente:
.ctrlpignore
se puede poner en cualquier directorio que ctrlp reconozca como directorio raíz. Aquí hay un ejemplo, cada línea comienza con./
vim ~/.ctrlpignore
Nota:
grep -F
interpretará el patrón, ej. './.tmp', como una cadena fija si no desea que su './ptmp' se filtre. Todavía hay algunos errores triviales: './.tmp' también filtrará './.tmp2'. Olvídalo, no me gusta\.
g:ctrlp_custom_ignore
será ignorado sig:ctrlp_user_command
está configurado. Esos podrían hacerse de una manera más compleja.g:ctrlp_user_command
También es posible la lista blanca en lugar de la lista negra. Más conveniente si se implementa en un script separado
fuente