Veja esta dica no wiki vim de como ter o recuo correto mesmo para linhas vazias. Se você quer apenas manter o recuo anterior (ignorando o vim calculado como o recuo correto) use let ind = indent(prevnonblank(v:lnum - 1)) como explicado em um comentário na mesma entrada do wiki.