За замовчуванням, коли ви натискаєте C-n
або C-p
, Vim зазирає в різні джерела, щоб знайти кандидатів, які заповнять меню завершення.
Ці джерела можна налаштувати за допомогою локального буфера 'complete'
.
Значення цієї опції - розділений комою список прапорів. Кожен прапор має своє значення, описане в :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 "]"
За замовчуванням його значення становить .,w,b,u,t,i
, що означає:
1. the current buffer
2. buffers in other windows
3. other loaded buffers
4. unloaded buffers
5. tags
6. included files
Якщо ви виявите, що сканування включених файлів займає занадто багато часу, ви можете спробувати видалити i
прапор із цієї 'cpt'
опції.
Якщо ви хочете вилучити його із загального значення, вплинути на всі буфери за замовчуванням, ви напишіть у своєму vimrc
:
setglobal complete-=i
Якщо ви хочете зробити те саме, але лише для perl
файлів, ви можете встановити autocmd всередині вашого vimrc
:
augroup PerlSettings
autocmd!
autocmd FileType perl setlocal complete-=i
augroup END
Або ще краще, ви можете створити плагін для файлового типу, наприклад ~/.vim/after/ftplugin/perl.vim
, у якому ви просто напишете:
setlocal complete-=i
Щоб перевірити, які поточні глобальні та локальні значення вашого 'complete'
параметра та де вони були останньо встановлені, ви можете використовувати ці команди:
verbose setglobal complete?
verbose setlocal complete?
Або коротше:
verb setg cpt?
verb setl cpt?
Якщо єдиним джерелом, яке вас цікавить, є поточний буфер, то замість цього C-n
ви можете використовувати C-x C-n
. Див. Для :h i_^x^n
отримання додаткової інформації.
let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }