Estou tentando definir uma função que tornará mais fácil ver onde o cursor está localizado, colocando miras ao redor dele por 100ms.
Aqui está a minha tentativa:
function! Flash()
set cursorline cursorcolumn
sleep 100m
set nocursorline nocursorcolumn
endfunction
nnoremap <leader>fl :call Flash()
Parece que a função acima está chamando a suspensão no início, e não entre as duas chamadas "definidas".
Existe algo fundamental no "sono" que estou entendendo mal?
Respostas:
O problema é que o Vim não redesenha a tela até que a função seja concluída. Não tenho certeza de qual é exatamente a lógica do Vim em quando redesenhar , mas nesse tipo de caso você costuma chamar
redraw
manualmente:Você provavelmente também deseja adicionar
<CR>
ao mapeamento de chaves:fonte