vim: Сохранение при помощи sudo, когда встречаем Changing a readonly file

· На чтение уйдёт 2 минуты · (249 слов)

О, как часто бывает, что файл, который мы открыли на редактирование, недоступен для чтения. В таком случае, радость от общения с лучшим текстовым редактором в мире омрачается красной надписью: W10: Warning: Changing a readonly file.

Можно, конечно, выйти из редактора и воспользоваться sudo vim имяфайла, это первое, что приходит в голову. Но есть способ куда лучше... Даже два!

Самый простой способ записать изменения в файл, если у вас нету прав для записи, не покидая vim, это команда :w !sudo tee %. Как это работает? Мы все содержимое файла скармливаем в стандартный вывод команды sudo tee, а она уже записывает его в файл, будучи запущенной с правами пользователя root.

Но это все еще не слишком удобно! А не было ли у вас такого, что вы пишете :W вместо :w и в результате vim не сохраняет ваш файл, ругаясь на неверную команду? У меня такое постоянно, и именно поэтому я пользуюсь таким макросом:

command W w !sudo tee % > /dev/null

Эту команду надо записать в файл .vimrc в вашем домашнем каталоге (как правило, это файл /home/yourlogin/.vimrc (Linux, FreeBSD, *BSD) или /Users/yourlogin/.vimrc в Mac OS X).

Кстати, если уж вы добрались до редактирования этого файла, возможно, вам будет приятно по умолчанию показать номера строк в файле и сменить цветовую схему по умолчанию. А делается это, соответственно, командами:

colorscheme evening
set number
:highlight LineNr term=bold cterm=NONE ctermfg=DarkGrey ctermbg=NONE gui=NONE guifg=DarkGrey guibg=NONE

Последняя команда делает подсветку номеров строк менее сливающейся с текстом файла. Надеюсь, это сделает вашу работу в vim еще более комфортной и приятной.

Полезное