Я открыл файл в режиме только для чтения; Есть ли способ выйти из режима только для чтения?
w
каждого раза, когда я хочу сохранить. хех
Я открыл файл в режиме только для чтения; Есть ли способ выйти из режима только для чтения?
w
каждого раза, когда я хочу сохранить. хех
Ответы:
Вы могли бы сделать это:
:set noro
Это снимает флажок только для чтения, но если базовый файл по-прежнему недоступен для записи, vim все равно не сможет записать в него.
:set ro
.
view
но затем решаете отредактировать его.
Вы можете запустить chmod
изнутри vim:
:!chmod +w %
!
означает запустить команду оболочки и %
является текущим именем файла. Вы также можете просто форсировать запись файла:
:w!
В дополнение к ответу Михаэля Мрозека вы можете добавить в свою строку строку .vimrc
, позволяющую записать файл, который вы пренебрегали открытием с повышенными правами доступа:
" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null
Если файл только для чтения, вам нужно только ввести :w!!, вам будет предложено ввести пароль, а затем файл будет успешно записан.
В то время как :set noro
делает работу, он не проверяет, открыт ли файл другим экземпляром vim, или обновляет файл при внешнем изменении.
Чтобы сделать его редактируемым и проверить наличие файлов подкачки (это файл по умолчанию, открывающий файл с помощью vim), просто используйте команду edit (: help edit):
:e
Обратите внимание, что если с тех пор этим файлом манипулировали (даже вне vim), он обновит изменения в текущем буфере (что я обычно считаю желательным).
Здесь я иду, хотя и немного поздно, может быть, вы уже решили свои сомнения;) Я не видел ни в одном из комментариев, как я знаю с vim , поэтому я добавляю его:
Как только вы редактируете файл, вы нажимаете :w
или :wq
, и вы видите раздражающее сообщение " E45 'readonly' опция установлена (добавить! Для переопределения) "
Вы можете напечатать
:w !sudo tee %
w
пишет буфер, !sudo
вызывает оболочку с помощью sudo, tee
перенаправляет вывод vim :w
на выход с тройником, и%
текущее имя файлаИ это должно сработать. Обратите внимание, что это предложит перезагрузить файл в vim, для чего вы должны нажать L
!
кw
команде даст результат, как сказал Майкл.