Bagaimana cara saya menyimpan file read-only di Vim untuk Windows?

8

Saya sudah mencari ini banyak dan setiap jawaban tentang Vim di Linux. Apakah ada cara untuk menyimpan file read-only langsung dari Vim di Windows?

Durga Swaroop
sumber

Jawaban:

11

Seperti pada versi vi / vim lainnya, Anda dapat menggunakan :w!untuk memaksa penulisan, selama Anda memiliki izin untuk mengganti properti hanya-baca.

Misalnya, jika Anda telah menetapkan file sebagai hanya-baca, yang di atas akan berfungsi. Jika Windows itu sendiri atau seorang administrator telah mengaturnya hanya-baca, Anda akan memerlukan opsi lain.

Seperti yang dikomentari @ dash-tom-bang, salah satu contoh yang baik adalah di dalam Program Files, di mana file dilindungi secara default. Artikel berbasis pengetahuan Microsoft ini menjelaskan cara kerjanya dalam praktik.

rolinger
sumber
Akun saya ditetapkan sebagai Admin tetapi :w!tidak berfungsi. Dikatakan tidak bisa membuka file untuk dibaca. Meskipun saya dapat melakukan hal yang sama persis di luar vim.
Durga Swaroop
1
@DurgaSwaroop: Apakah Anda mencoba membuka gvimsebagai Run as Administrator? Mungkin itu akan menyelesaikan tujuan Anda ... atau mungkin saja file itu dikunci oleh aplikasi lain ...
Cylian
1
@DurgaSwaroop: Proses induk harus run as administratormenyelesaikan sub-prosesnya yang melibatkan tugas administratif untuk dilakukan ... Silakan lihat di windows.microsoft.com/en-in/windows/… .... jika tidak, matikan UACpengaturan ... .
Cylian
1
Mengedit file di dalam hierarki Program Files misalnya, :w!tidak dapat terbang dan Anda harus menjalankan gVim sebagai administrator atau menjalankan Vim dalam prompt perintah yang dijalankan sebagai administrator.
dash-tom-bang
1
Terima kasih @ dash-tom-bang, saya telah menambahkan referensi ke contoh yang bagus dalam jawaban saya.
rolinger
2

Anda dapat menggunakan plugin SudoEdit saya .

Christian Brabandt
sumber
Apakah ini berfungsi di windows dengan benar? Dalam file Readme dikatakan tidak mungkin.
Durga Swaroop
Dari tes saya seharusnya. Namun saya tidak sering menggunakan Windows dan saya tidak pernah mendapatkan umpan balik untuk itu. Itulah alasan readme. Itu juga tergantung pada metode apa yang Anda gunakan.
Christian Brabandt
2

Ada kemungkinan lain yang belum diatasi dalam jawaban lain: vim akan menolak untuk menyimpan file jika dibuka dan dikunci oleh aplikasi Windows lain. Banyak aplikasi Windows biasa (Office, misalnya) mengunci file yang dibuka. Jika ini masalahnya, tidak ada masalah dengan izin atau: w! akan membantumu. Anda hanya perlu menutup file di aplikasi lain, dan kemudian Anda dapat menyimpannya dari vim. Sangat disayangkan bahwa vim tidak dengan jelas memberi sinyal situasi ini kepada pengguna.

JKna
sumber
0

Untuk win7: Mulai> Jalankan> Cmd (sebagai Admin), dan jalankan perintah ini untuk membuat pohon dir dapat ditulisi oleh admin:

cd parent/folder

:: /f file, /a admin,  /r recurse, /d y = nopromt
takeown /F . /A /R /D Y > nul:

:: /t /q /c .. traverse quiet continue
icacls . /t /q /c /reset
icacls . /t /q /c /grant    :r Everyone:F
icacls . /t /q /c /setowner Administrators 
mosh
sumber
0

Jalankan gVim sebagai administrator, misalnya dengan mengklik kanan, atau menggunakan pintasan keyboard Shift+ F10, pintasan gVim di menu Mulai dan memilih Jalankan sebagai administrator .

Buka file yang ingin Anda edit dan simpan perubahan Anda menggunakan :wseperti biasa.

Kenny Evitt
sumber
0

Saya menggunakan gvim untuk mengedit C:\Windows\System32\drivers\etc\hostssetelah mengatur izin untuk "kontrol penuh", trik yang terlibat pengaturan "mewarisi izin" menjadi "tidak" terlebih dahulu. Kemudian mulai bekerja tanpa "!". Saya juga lari attribtetapi itu tidak efektif.

Joe Bonds
sumber
Apakah :sudoeditbekerja di windows? Maaf, saya tidak bisa memeriksa.
Biggybi
-1

Ketik :f "newfilename"mode perintah saat meninggalkan :wuntuk menyimpan di bawah nama file baru.

pengguna2866244
sumber