По умолчанию, когда вы нажимаете 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/' }