A conclusão de Ctrl-n leva muito tempo para "verificar o arquivo incluído"

15

Estou atualizando minhas habilidades em vim e mexendo na conclusão usando o comando Ctrl-n. Estou programando em Perl. Quando estou no modo de inserção e pressiono Ctrl-n, recebo uma mensagem de que está "Verificando arquivo incluído" na parte inferior do terminal e parece que está verificando arquivos nos diretórios de distribuição perl. Isso pode levar alguns segundos antes de terminar. Parece que ele faz isso com os pacotes que eu incluo que são comentados:

#use Moose;

Portanto, tenho que excluir essas linhas para que esse recurso seja de qualquer valor. Estou esquecendo de algo?

Estou usando o plugin perl-support.

StevieD
fonte
Eu tentei algo parecido com isso em .vimrc mas tinha em efeito:let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }
stevied

Respostas:

13

Por padrão, quando você pressiona C-nou C-p, o Vim procura dentro de várias fontes para encontrar candidatos que preencherão o menu de conclusão.

Essas fontes podem ser configuradas com a 'complete'opção buffer-local .

O valor dessa opção é uma lista de sinalizadores separados por vírgula. Cada bandeira tem seu próprio significado descrito em :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 "]"

Por padrão, seu valor é .,w,b,u,t,i, o que significa:

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

Se você achar que a verificação dos arquivos incluídos leva muito tempo, tente remover o isinalizador da 'cpt'opção.

Se você deseja removê-lo do valor global, para afetar todos os buffers por padrão, escreva em vimrc:

setglobal complete-=i

Se você quiser fazer a mesma coisa, mas apenas para perlarquivos, poderá instalar um autocmd dentro do seu vimrc:

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

Ou melhor, você pode criar um plug-in de tipo de arquivo, por exemplo ~/.vim/after/ftplugin/perl.vim, no qual você simplesmente escreveria:

setlocal complete-=i

Para verificar quais são os valores globais e locais atuais de sua 'complete'opção e onde eles foram definidos pela última vez, você pode usar estes comandos:

verbose setglobal complete?
verbose setlocal complete?

Ou mais curto:

verb setg cpt?
verb setl cpt?

Se a única fonte na qual você está interessado é o buffer atual, então, em vez de usar C-n, você pode usá-lo C-x C-n. Veja :h i_^x^npara mais informações.

user9433424
fonte
1
Existe uma maneira de excluir palavras-chave em arquivos em determinados caminhos?
19417 StevieD
Os documentos do Vim 'complete'mencionam "arquivos incluídos", mas não apontam para mais detalhes sobre o que isso significa. Então leia :he include-search. Lá, você pode ver que a 'include'opção define o que isso significa e 'path'é usada para pesquisar. Eles são úteis para fazer uma personalização mais refinada do que apenas ativar / desativar todo o recurso.
jwd