Na maioria das configurações, o sudo remove a maioria das variáveis de ambiente. Você pode ver a configuração do sudo executando sudo -V como root (então sudo sudo -V como um usuário com permissões sudo).
No Ubuntu, as variáveis são removidas, exceto em uma lista pequena, e EDITOR e VISUAL não estão na lista para serem preservadas. Portanto, quando você executar sudo somecommand , suas preferências de editor por usuário não serão aplicadas ao executar somecommand .
Quando você executa sudo -E , o arquivo é copiado para um local temporário, o sudo executa o editor sem privilégios adicionais e, finalmente, o arquivo temporário é movido para o local final se o editor retornar um status de sucesso. Como o editor é executado sem privilégios adicionais, o sudo não tira o ambiente.
Você deve usar sudo -E sempre que possível, pois isso permite que você execute seu editor favorito sem preocupações sobre a execução de programas com privilégios elevados. Quando isso não for possível (por exemplo, para executar crontab -e , você pode escolher seu editor definindo sua preferência novamente dentro do comando executado pelo sudo:
sudo env VISUAL=vim crontab -e