Domyślnie, kiedy naciskasz C-n
lub C-p
, Vim przegląda różne źródła w poszukiwaniu kandydatów, którzy wypełnią menu ukończenia.
Te źródła można skonfigurować za pomocą opcji bufora lokalnego 'complete'
.
Wartością tej opcji jest rozdzielona przecinkami lista flag. Każda flaga ma swoje własne znaczenie opisane w :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 "]"
Domyślnie jego wartością jest .,w,b,u,t,i
, co oznacza:
1. the current buffer
2. buffers in other windows
3. other loaded buffers
4. unloaded buffers
5. tags
6. included files
Jeśli okaże się, że skanowanie dołączonych plików zajmuje zbyt dużo czasu, możesz spróbować usunąć i
flagę z 'cpt'
opcji.
Jeśli chcesz usunąć go z wartości globalnej, aby domyślnie wpływać na wszystkie bufory, napisz vimrc
:
setglobal complete-=i
Jeśli chcesz zrobić to samo, ale tylko dla perl
plików, możesz zainstalować autocmd wewnątrz vimrc
:
augroup PerlSettings
autocmd!
autocmd FileType perl setlocal complete-=i
augroup END
Lub lepiej, możesz utworzyć wtyczkę typu pliku, na przykład w ~/.vim/after/ftplugin/perl.vim
, w której po prostu napiszesz:
setlocal complete-=i
Aby sprawdzić, jakie są bieżące globalne i lokalne wartości twojej 'complete'
opcji oraz gdzie były ostatnio ustawione, możesz użyć tych poleceń:
verbose setglobal complete?
verbose setlocal complete?
Lub krócej:
verb setg cpt?
verb setl cpt?
Jeśli jedynym źródłem, które Cię interesuje, jest bieżący bufor, zamiast tego C-n
możesz użyć C-x C-n
. Zobacz :h i_^x^n
więcej informacji.
let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }