Vim когда сохраняет файл делает две очень важные вещи, почему-то
недоступные супер-пупер редакторам: 1) умеет оригинальный файл переименовать в filename~ или в ~/.trash/filename~, как настроишь;
2) пишет рядом новый файл с временным именем, потом атомарно переименовывает.
Последнее важно, ибо сбой в процессе записи: получаешь огрызок и ни туда, ни сюда.