La finalización de Ctrl-n lleva mucho tiempo para "escanear el archivo incluido"


15

Estoy repasando mis habilidades vim y jugando con la finalización usando el comando Ctrl-n. Estoy programando en Perl. Cuando estoy en modo de inserción y presiono Ctrl-n, recibo un mensaje que dice "Escaneando el archivo incluido" en la parte inferior del terminal y parece que está escaneando archivos en los directorios de distribución de Perl. Esto puede tomar varios segundos antes de que termine. Parece que hace esto con los paquetes que incluyo que están comentados:

#use Moose;

Así que tengo que eliminar estas líneas para que esta característica tenga algún valor. ¿Me estoy perdiendo de algo?

Estoy usando el complemento perl-support.


Intenté algo como esto en .vimrc pero tuvo efecto:let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }
StevieD

Respuestas:


13

Por defecto, cuando presionas C-no C-p, Vim busca dentro de varias fuentes para encontrar candidatos que llenen el menú de finalización.

Estas fuentes se pueden configurar con la 'complete'opción local de búfer .

El valor de esta opción es una lista de banderas separadas por comas. Cada bandera tiene su propio significado descrito en :h 'cpt:

.   scan the current buffer ('wrapscan' is ignored)
w   scan buffers from other windows
b   scan other loaded buffers that are in the buffer list
u   scan the unloaded buffers that are in the buffer list
U   scan the buffers that are not in the buffer list
k   scan the files given with the 'dictionary' option
kspell  use the currently active spell checking |spell|
k{dict} scan the file {dict}.  Several "k" flags can be given, patterns are valid too.  For example:  
        :set cpt=k/usr/dict/*,k~/spanish
s   scan the files given with the 'thesaurus' option
s{tsr}  scan the file {tsr}.  Several "s" flags can be given, patterns are valid too.
i   scan current and included files
d   scan current and included files for defined name or macro |i_CTRL-X_CTRL-D|
]   tag completion
t   same as "]"

Por defecto, su valor es .,w,b,u,t,i, lo que significa:

   1. the current buffer
   2. buffers in other windows
   3. other loaded buffers
   4. unloaded buffers
   5. tags
   6. included files

Si encuentra que el escaneo de los archivos incluidos lleva demasiado tiempo, puede intentar eliminar la ibandera de la 'cpt'opción.

Si desea eliminarlo del valor global, para afectar a todos los búferes de forma predeterminada, debe escribir en su vimrc:

setglobal complete-=i

Si desea hacer lo mismo, pero solo para los perlarchivos, puede instalar un autocmd dentro de su vimrc:

augroup PerlSettings
    autocmd!
    autocmd FileType perl setlocal complete-=i
augroup END

O mejor, podría crear un complemento de tipo de archivo, por ejemplo ~/.vim/after/ftplugin/perl.vim, en el que simplemente escribiría:

setlocal complete-=i

Para verificar cuáles son los valores globales y locales actuales de su 'complete'opción, y dónde se configuraron por última vez, puede usar estos comandos:

verbose setglobal complete?
verbose setlocal complete?

O más corto:

verb setg cpt?
verb setl cpt?

Si la única fuente en la que está interesado es el búfer actual, entonces, en lugar de usar C-n, puede usar C-x C-n. Ver :h i_^x^npara más información.


1
¿Hay alguna manera de excluir palabras clave en archivos en ciertas rutas?
StevieD

Los documentos de Vim por 'complete'mencionar "archivos incluidos", pero no se vinculan a más detalles sobre lo que eso significa. Entonces, lee :he include-search. Allí, puede ver que la 'include'opción define lo que eso significa y 'path'se utiliza para buscar. Estos son útiles para hacer una personalización más fina que simplemente activar / desactivar toda la función.
jwd
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.