O preenchimento automático do Vim é terrivelmente lento
-
24-09-2019 - |
Pergunta
Na maioria das vezes, o recurso de preenchimento automático no Vim funciona bem para mim, mas às vezes parece estar verificando arquivos aos quais o arquivo atual faz referência e, em seguida, torna-se dolorosamente lento, às vezes demorando vários segundos para liberar o foco de volta para mim.
Às vezes, o Vim me diz simplesmente que está "digitalizando" outras vezes, está dizendo "digitalizando tags"
Isso só aconteceu em arquivos Ruby, e acontece principalmente quando há um requerimento no arquivo.
Meu palpite é que este é algum tipo de recurso que verifica arquivos relacionados em busca de opções de preenchimento automático, mas eu realmente não preciso disso e prefiro um preenchimento automático mais rápido.
Solução
Como mencionei em um comentário, tive o mesmo problema.Aqui está o que encontrei;
Há uma configuração que informa ao VIM onde procurar conclusões, chamada complete
.
:set complete
complete=.,w,b,u,t,i
Este é o valor padrão.Meu problema é (na verdade ..) o 'i', que verifica todos os arquivos incluídos.Aqui estão dois problemas, o primeiro, encontrar todos esses arquivos podem demorar um pouco, especialmente se você, como eu, tiver
:set path=**
Segundo problema, uma vez encontrados, eles precisam ser lidos e, se você estiver usando um sistema de arquivos em rede (estou no clearcase), localizar e ler todos esses arquivos pode causar falhas no cache, tornando-o dolorosamente lento.
Eu removi o i por enquanto, pois tenho um arquivo de tags e, na maioria das vezes, também tenho os arquivos relevantes em meus buffers (carregados ou descarregados) que serão pesquisados como resultado de 'b' e 'u '.
Usar
set complete-=i
para remover o i da lista, observe que isso é local para o buffer.
Outras dicas
Teve um problema muito semelhante desde a atualização para o Vim 7.3 (de 7.2): eu estava usando o (excelente) Plugin ACP E em arquivos de origem mais longos (arquivos C, 1700 LOC), o pop-up levou anos para pular as sugestões quando eu estava editando perto da parte inferior do arquivo.
Usando o PerformanceValidator (a partir de Softwareverify), Descobri que alguns métodos de dobra foram chamados repetidamente e levaram a carga de processador muito alta e conclusão lenta.
Minha solução alternativa era definir o foldmethod
(fdm
) para manual
. E isso resolveu ...
Você tem um arquivo de tags para o projeto em que está trabalhando? Caso contrário, tente gerar um com CTAGs exuberantes e o VIM deve buscá-lo com o taglist pluglin.