Bagaimana saya bisa keluar dari mode read-only di Vim?

38

Saya membuka file dalam mode readonly; apakah ada cara untuk keluar dari mode readonly?

nama pengguna salah
sumber
Apa batasan dalam mode readonly yang mengganggu Anda? Jika hanya saja Anda ingin menulis file, meskipun Anda opend itu hanya membaca, kemudian menambahkan !ke wperintah akan melakukan trik, seperti Michael menyatakan.
Bananguin
1
@ user1129682 hanya ketidaknyamanan mengingat untuk meletakkan tanda seru setelah wsetiap kali saya ingin menyimpan. heh
wrongusername

Jawaban:

44

Anda bisa melakukan ini:

:set noro

Itu menghapus tanda baca-saja, tetapi jika file yang mendasarinya masih belum dapat ditulis oleh Anda maka vim masih tidak dapat menulisnya.

Philip Kearns
sumber
bagaimana cara membalikkan ini dan kembali untuk membaca saja?
Louis Hong
2
@LouisHong Sangat mudah: :set ro.
Philip Kearns
1
Ini sangat cocok untuk jika Anda membuka file yang dapat ditulisi viewtetapi kemudian memutuskan untuk mengeditnya.
wisbucky
9

Anda dapat lari chmoddari dalam vim:

:!chmod +w %

!berarti menjalankan perintah shell, dan %merupakan nama file saat ini. Anda juga bisa memaksa file menulis:

:w!
Michael Mrozek
sumber
3

Selain jawaban Michael Mrozek , Anda dapat menambahkan baris ke Anda .vimrcyang memungkinkan Anda menulis ke file yang telah Anda abaikan untuk dibuka dengan izin yang lebih tinggi:

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

Jika file hanya dibaca, Anda hanya perlu memasukkan :w!! , Anda akan diminta kata sandi dan kemudian file akan berhasil ditulis.

jasonwryan
sumber
2

Sementara :set noro melakukan pekerjaan, itu tidak memeriksa apakah file dibuka oleh contoh vim lain atau memperbarui file jika diubah secara eksternal.

Untuk membuatnya dapat diedit dan memeriksa file swap (yang merupakan default membuka file dengan vim) cukup gunakan perintah edit (: bantu edit):

:e

Catatan, jika file telah dimanipulasi sejak itu (bahkan di luar vim), itu akan memperbarui perubahan dalam buffer saat ini (yang menurut saya biasanya diinginkan).

Sebastian Müller
sumber
1

Ini dia, walaupun agak terlambat, mungkin Anda sudah menyelesaikan keraguan Anda;) Saya belum melihat di komentar seperti yang saya tahu dengan vim , jadi, saya tambahkan:

Setelah mengedit file, Anda menekan :watau :wq, dan Anda melihat pesan yang mengganggu " E45 'readonly' option is set (add! To override) "

Opsi baca hanya E45 diatur (tambahkan! Untuk menimpa)

Anda bisa mengetik

:w !sudo tee %

w! sudo tee%

  • w menulis buffer,
  • !sudo memanggil shell dengan sudo,
  • tee mengarahkan ulang output dari vim :w ke output dengan tee, dan
  • % adalah nama file saat ini

Dan itu harus melakukan trik. Perhatikan bahwa ini akan meminta untuk memuat ulang file dalam vim, untuk apa yang Anda harus tekan L

masukkan deskripsi gambar di sini

xCovelus
sumber