sudo não pode alterar o usuário efetivo de um processo existente, ele sempre cria um novo processo que possui privilégios elevados e o shell original não é afetado. Isso é fundamental para o design do UNIX. Na maioria das vezes, basta salvar o arquivo em / tmp como solução alternativa. Se você realmente quer salvá-lo diretamente, você pode tentar usar um recurso do Vim onde ele pode enviar um arquivo para outro processo. Tente salvar com este comando:
:w !sudo dd of=%
Testado e funciona. O Vim lhe pedirá para recarregar o arquivo, mas é desnecessário: você pode simplesmente pressionar o para evitar recarregar e perder seu histórico de desfazer. Você pode até salvar isso em um comando / função do Vim ou até ligá-lo a uma tecla para facilitar o acesso, mas deixarei isso como um exercício para o leitor.