Як я можу вийти з режиму лише для читання у Vim?


38

Я відкрив файл у режимі лише для читання; чи є спосіб вийти з режиму лише для читання?


Які обмеження в режимі читання тільки вас турбують? Якщо ви просто хочете написати файл, навіть якщо ви відкриєте його лише для читання, додавання команди !до wкоманди виконає трюк, як заявив Майкл.
Bananguin

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

Відповіді:


44

Ви можете зробити це:

:set noro

Це знімає прапор лише для читання, але якщо базовий файл все ще не може бути записаний вами, то vim все ще не зможе записати його.


як це змінити і повернутись лише до читання?
Луї Гонг

2
@LouisHong Дуже легко: :set ro.
Філіп Кірнс

1
Це ідеально підходить, якщо ви відкриєте файл, що записується, viewале потім вирішите його відредагувати.
Вісбукі

9

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

:!chmod +w %

!означає запустити команду shell, і %це поточне ім'я файлу. Ви також можете просто змусити файл записати:

:w!

3

Окрім відповіді Майкла Мрозека , ви можете додати рядок до свого, .vimrcщо дозволяє записувати у файл, який ви знехтували відкривати, з підвищеними дозволами:

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

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


2

Хоча :set noroце виконує завдання, воно не перевіряє, чи файл відкрито іншим екземпляром vim чи оновить файл, якщо він змінений зовні.

Для того, щоб зробити його редагованим та перевірити наявність файлів підкачки (що за замовчуванням відкриває файл з vim), просто скористайтеся командою редагування (: допомогти редагувати):

:e

Зауважте, якщо файлом маніпулювали з тих пір (навіть поза vim), він оновлює зміни в поточному буфері (що я вважаю зазвичай бажаним).


1

Ось я йду, хоча трохи пізно, можливо, ви вже вирішили свої сумніви;) Я не бачив у жодному із коментарів способу, який я знаю з vim , так що я додаю це:

Щойно ви редагуєте файл, натискаєте :wабо :wq, і ви бачите прикрим повідомлення " Налаштовано параметр " E45 "лише для читання (додати! Перезазначити) "

Встановлено лише параметр E45 для читання (додайте! До переопределення)

Ви можете набрати

:w !sudo tee %

w! sudo tee%

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

І це повинно зробити трюк. Зауважте, що це запропонує перезавантажити файл у vim, для чого потрібно натиснути L

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.