Per impostazione predefinita, quando premi C-n
o C-p
, Vim guarda all'interno di varie fonti per trovare candidati che popoleranno il menu di completamento.
Queste origini possono essere configurate con l' 'complete'
opzione buffer-local .
Il valore di questa opzione è un elenco di flag separati da virgola. Ogni bandiera ha il suo significato descritto in :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 "]"
Per impostazione predefinita, il suo valore è .,w,b,u,t,i
, che significa:
1. the current buffer
2. buffers in other windows
3. other loaded buffers
4. unloaded buffers
5. tags
6. included files
Se ritieni che la scansione dei file inclusi richieda troppo tempo, puoi provare a rimuovere il i
flag 'cpt'
dall'opzione.
Se si desidera rimuoverlo dal valore globale, per influire su tutti i buffer per impostazione predefinita, si dovrebbe scrivere nel vimrc
:
setglobal complete-=i
Se volessi fare la stessa cosa, ma solo per i perl
file, potresti installare un autocmd nel tuo vimrc
:
augroup PerlSettings
autocmd!
autocmd FileType perl setlocal complete-=i
augroup END
O meglio, è possibile creare un plug-in di tipo di file, ad esempio ~/.vim/after/ftplugin/perl.vim
, in cui scrivere semplicemente:
setlocal complete-=i
Per scoprire quali sono gli attuali valori globali e locali della tua 'complete'
opzione e dove sono stati impostati l'ultima volta, puoi usare questi comandi:
verbose setglobal complete?
verbose setlocal complete?
O più breve:
verb setg cpt?
verb setl cpt?
Se l'unica fonte a cui sei interessato è il buffer corrente, allora, invece di usare C-n
, potresti usare C-x C-n
. Vedi :h i_^x^n
per maggiori informazioni.
let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }