Percebi que o método fold do vim afeta a eficiência do preenchimento automático, por exemplo, C-N
é lento e C-X L
horrivelmente lento em arquivos de tamanho médio com foldexpr
s relativamente caros .
Não consigo ver o valor de ter o foldexpr consultado durante a execução automática, por isso, gostaria de desabilitar isso de alguma forma para obter o preenchimento automático utilizável de volta.
Alguma sugestão?
EDIT: Caso de teste
Um caso de teste: sem plugins; e somente isso, que deve ser a função foldexpr mais mínima possível (e é completamente inútil, exceto para contar as invocações) em .vimrc
:
let g:c = 0
function! Myfoldexpr()
let g:c = 1 + g:c
return '0'
endfunction
Agora inicie o vim com um documento em branco. Copiaremos as primeiras 100 linhas do arquivo de ajuda do Vim e, em seguida, executaremos a linha de preenchimento automático, escolhendo a 10ª sugestão, e veremos quantas vezes o foldexpr foi chamado.
:help
y100j:q
P:set foldexpr=Myfoldexpr()
:set fdm=expr
O<C-X><C-L><C-L><C-L><C-L><C-L><C-L><C-L><C-L><C-L><C-L><Esc>
:echo g:c
2088
Agora, esse é um arquivo de 100 linhas, com linhas relativamente curtas e o foldexpr foi chamado 2088 vezes (embora 100 deles sejam feitos na primeira configuração do foldexpr). O foldexpr eficiente é obviamente bom, mas nós programadores solicitamos muito do foldexpr, portanto eles são necessariamente não triviais e, quando o tempo de execução é multiplicado por vários milhares, você escolhe entre o preenchimento automático ou o recuo para obter produtividade. Sendo ganancioso / preguiçoso, eu gostaria de poder usar os dois! Além de tentar reescrever vários plugins dobráveis baseados em foldexpr bastante bem estabelecidos (eu tentei reescrever o dobramento de php e depois de dias tentando otimizá-lo para um estado viável, desisti do foldexpr para php), talvez haja uma maneira de usar um mapeamento para ativar fdm=manual
antes do preenchimento automático ou algo assim?
iHello<Esc>
, a g:c
variável também é aumentada para 20
, então o oWorld<Esc>
faz 38
... Assim, o número de avaliações foldexpr
parece não estar relacionado ao uso da conclusão ... Tente carregar o Vim com um mínimo de vimrc arquivo e ver se o problema persistir, pode ser outra definição ou um plugin.
p
), acho que o que está fazendo é fazê-lo por caractere do candidato a inserção.