: wq в Vim не сохраняет

8

Я пытаюсь использовать, :wqчтобы сохранить текстовый файл, который я отредактировал в Vim, но при вводе :wqя получаю сообщение об ошибке

E45: 'readonly' option is set (add ! to override)`  

Когда я добавляю !в :wqлайк :wq!, я получаю это:

"/etc/dhcp/dhcpd.conf"

"/etc/dhcp/dhcpd.conf" E212: Can't open file for writing

Файл, который я хочу отредактировать, находится dhcpdв /etc/dhcpdпути.

Как я могу это сделать?

Мохаммед Реза Резвани
источник
Предпочитаю :xили ZZвыйти и сохранить. Это будет писать только при изменении.
Хаулет

Ответы:

14

Вам необходимо открыть файл с правами суперпользователя следующим образом:

sudo vi /etc/dhcp/dhcpd.conf

отредактируйте файл, нажав, iа затем сохраните и выйдите, нажав, Escа затем либо :wqили, :xлибо просто :wсохранив.


Спасибо Riking за предложение sudoedit: вы можете использовать sudoedit /path/to/file/filenameдля редактирования файлы, принадлежащие пользователю root, а не использовать sudo <editor> /pat/to/file/filename. Это полезно для машин уровня предприятия или производственных машин, поскольку sudoedit регистрируется в /var/log/auth.log.

Если вы хотите изменить редактор по умолчанию для sudoedit, сделайте следующее:

sudo update-alternatives --config editor

а затем нажмите Returnи выберите нужный редактор и снова нажмите Return.


Читайте также: обсуждение Redit о том, почему sudoedit может быть полезным

Jobin
источник
3
Я предпочитаю sudoeditдля этих ситуаций - он создает временную копию, запускает редактор и копирует результат. Если вы ранее выбрали nanoэту команду, запустите EDITOR=vi sudoedit /etc/file.
Riking
1
@Riking: Спасибо sudoedit, даже не знал, что он существует. Однако наткнулся на это, пока гуглил sudoedit. Я предложу это, но оставьте это пользователю, если они считают необходимым использовать.
Jobin
sudoeditтакже выбирает EDITORпеременную, это легче установить, чем настраивать альтернативы
muru
9

/etcсостоит из всех файлов конфигурации, поэтому для редактирования файлов /etcвам необходимы права суперпользователя, но иногда мы забываем об этом sudo. но в то время мы также можем использовать

:w !sudo tee %

затем введите пароль администратора

:q!

успешно выйти

Адитья Джангид
источник
1
Вы можете добавить cmap w!! w !sudo tee > /dev/null %в свой, .vimrcчтобы разрешить сохранение с помощью этого метода с :w!!. Если вам интересно, почему этот метод работает, см. Stackoverflow.com/questions/2600783/…
Герхард Бургер