В очередной раз редактировав конфигурационный файл в /etc директории при сохранении обнаружил что забыл вызвать vim через sudo и как следствие – permission denied.
Понятно что можно извратиться – сохранить в другое место, потом переписать и пр. но оказывается есть способ намного элегантнее.
Основан на использовании команды tee, о которой до этого не подозревал.
Ну и само решение:
:w !sudo tee % |
% заменяется на имя редактируемого файла, остальное все должно понятно.
vim обнаружит что файл был изменен и выдаст соответсвующее предупреждение:
Warning: File “file.name” has changed and the buffer was changed in Vim as well
и сразу можете спокойно выходить – изменения сохранены.