L'achèvement de Ctrl-n prend beaucoup de temps pour «numériser le fichier inclus»


15

Je revisite mes compétences vim et je joue avec l'achèvement en utilisant la commande Ctrl-n. Je programme en Perl. Lorsque je suis en mode d'insertion et que je frappe Ctrl-n, je reçois un message indiquant qu'il s'agit de "Scanner le fichier inclus" en bas du terminal et il semble qu'il scanne les fichiers dans les répertoires de distribution perl. Cela peut prendre plusieurs secondes avant de se terminer. Il semble que ce soit le cas avec les packages que j'inclus et commentés:

#use Moose;

Je dois donc supprimer ces lignes pour que cette fonctionnalité ait une valeur quelconque. Suis-je en train de manquer quelque chose?

J'utilise le plugin perl-support.


J'ai essayé quelque chose comme ça dans .vimrc mais cela a eu un effet:let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }
StevieD

Réponses:


13

Par défaut, lorsque vous appuyez sur C-nou C-p, Vim regarde à l'intérieur de diverses sources pour trouver des candidats qui rempliront le menu d'achèvement.

Ces sources peuvent être configurées avec l' 'complete'option buffer-local .

La valeur de cette option est une liste d'indicateurs séparés par des virgules. Chaque drapeau a sa propre signification décrite dans :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 "]"

Par défaut, sa valeur est .,w,b,u,t,i, ce qui signifie:

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

Si vous trouvez que l'analyse des fichiers inclus prend trop de temps, vous pouvez essayer de supprimer l' iindicateur de l' 'cpt'option.

Si vous vouliez le supprimer de la valeur globale, pour affecter tous les tampons par défaut, vous écririez dans votre vimrc:

setglobal complete-=i

Si vous vouliez faire la même chose, mais uniquement pour les perlfichiers, vous pouvez installer un autocmd dans votre vimrc:

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

Ou mieux, vous pouvez créer un plugin de type de fichier, par exemple dans ~/.vim/after/ftplugin/perl.vim, dans lequel vous écririez simplement:

setlocal complete-=i

Pour vérifier quelles sont les valeurs globales et locales actuelles de votre 'complete'option et où elles ont été définies pour la dernière fois, vous pouvez utiliser ces commandes:

verbose setglobal complete?
verbose setlocal complete?

Ou plus court:

verb setg cpt?
verb setl cpt?

Si la seule source qui vous intéresse est le tampon actuel, alors, au lieu d'utiliser C-n, vous pouvez utiliser C-x C-n. Voir :h i_^x^npour plus d'informations.


1
Existe-t-il un moyen d'exclure des mots clés dans des fichiers dans certains chemins?
StevieD

Les documents Vim 'complete'mentionnent les "fichiers inclus", mais ne renvoient pas à plus de détails sur ce que cela signifie. Alors, lisez :he include-search. Là, vous pouvez voir que l' 'include'option définit ce que cela signifie et 'path'est utilisée pour la recherche. Ceux-ci sont utiles pour effectuer une personnalisation plus fine que d'activer / désactiver l'ensemble de la fonctionnalité.
jwd
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.