Как выйти из режима только для чтения в Vim?


39

Я открыл файл в режиме только для чтения; Есть ли способ выйти из режима только для чтения?


Какие ограничения в режиме только для чтения вас беспокоят? Если вы просто хотите записать файл, даже если вы открываете его только для чтения, то добавление a !к wкоманде даст результат, как сказал Майкл.
Bananguin

1
@ user1129682 просто неудобно вспоминать о восклицательном знаке после wкаждого раза, когда я хочу сохранить. хех
неправильное имя пользователя

Ответы:


45

Вы могли бы сделать это:

:set noro

Это снимает флажок только для чтения, но если базовый файл по-прежнему недоступен для записи, vim все равно не сможет записать в него.


как отменить это и вернуться только для чтения?
Луи Хонг

2
@LouisHong Очень легко: :set ro.
Филипп Кернс

1
Это идеально подходит, если вы открываете доступный для записи файл, viewно затем решаете отредактировать его.
wisbucky

9

Вы можете запустить chmodизнутри vim:

:!chmod +w %

!означает запустить команду оболочки и %является текущим именем файла. Вы также можете просто форсировать запись файла:

:w!

3

В дополнение к ответу Михаэля Мрозека вы можете добавить в свою строку строку .vimrc, позволяющую записать файл, который вы пренебрегали открытием с повышенными правами доступа:

" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null

Если файл только для чтения, вам нужно только ввести :w!!, вам будет предложено ввести пароль, а затем файл будет успешно записан.


2

В то время как :set noro делает работу, он не проверяет, открыт ли файл другим экземпляром vim, или обновляет файл при внешнем изменении.

Чтобы сделать его редактируемым и проверить наличие файлов подкачки (это файл по умолчанию, открывающий файл с помощью vim), просто используйте команду edit (: help edit):

:e

Обратите внимание, что если с тех пор этим файлом манипулировали (даже вне vim), он обновит изменения в текущем буфере (что я обычно считаю желательным).


1

Здесь я иду, хотя и немного поздно, может быть, вы уже решили свои сомнения;) Я не видел ни в одном из комментариев, как я знаю с vim , поэтому я добавляю его:

Как только вы редактируете файл, вы нажимаете :wили :wq, и вы видите раздражающее сообщение " E45 'readonly' опция установлена ​​(добавить! Для переопределения) "

E45 опция только для чтения установлена ​​(добавить! Для переопределения)

Вы можете напечатать

:w !sudo tee %

w! sudo tee%

  • w пишет буфер,
  • !sudo вызывает оболочку с помощью sudo,
  • tee перенаправляет вывод vim :w на выход с тройником, и
  • % текущее имя файла

И это должно сработать. Обратите внимание, что это предложит перезагрузить файл в vim, для чего вы должны нажать L

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.