Я відкрив файл у режимі лише для читання; чи є спосіб вийти з режиму лише для читання?
w
кожного разу, коли я хочу зберегти. хе
Я відкрив файл у режимі лише для читання; чи є спосіб вийти з режиму лише для читання?
w
кожного разу, коли я хочу зберегти. хе
Відповіді:
Ви можете зробити це:
:set noro
Це знімає прапор лише для читання, але якщо базовий файл все ще не може бути записаний вами, то vim все ще не зможе записати його.
:set ro
.
view
але потім вирішите його відредагувати.
Ви можете запустити chmod
зсередину vim:
:!chmod +w %
!
означає запустити команду shell, і %
це поточне ім'я файлу. Ви також можете просто змусити файл записати:
:w!
Окрім відповіді Майкла Мрозека , ви можете додати рядок до свого, .vimrc
що дозволяє записувати у файл, який ви знехтували відкривати, з підвищеними дозволами:
" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null
Якщо файл читається лише вам, вам потрібно буде лише ввести :w!!, вам буде запропоновано ввести пароль, і тоді файл буде успішно записаний.
Хоча :set noro
це виконує завдання, воно не перевіряє, чи файл відкрито іншим екземпляром vim чи оновить файл, якщо він змінений зовні.
Для того, щоб зробити його редагованим та перевірити наявність файлів підкачки (що за замовчуванням відкриває файл з vim), просто скористайтеся командою редагування (: допомогти редагувати):
:e
Зауважте, якщо файлом маніпулювали з тих пір (навіть поза vim), він оновлює зміни в поточному буфері (що я вважаю зазвичай бажаним).
Ось я йду, хоча трохи пізно, можливо, ви вже вирішили свої сумніви;) Я не бачив у жодному із коментарів способу, який я знаю з vim , так що я додаю це:
Щойно ви редагуєте файл, натискаєте :w
або :wq
, і ви бачите прикрим повідомлення " Налаштовано параметр " E45 "лише для читання (додати! Перезазначити) "
Ви можете набрати
:w !sudo tee %
w
пише буфер, !sudo
називає оболонку судо, tee
переспрямовує вихід vim :w
на вихід за допомогою трійника, і%
- поточне ім'я файлуІ це повинно зробити трюк. Зауважте, що це запропонує перезавантажити файл у vim, для чого потрібно натиснути L
!
доw
команди виконає трюк, як заявив Майкл.