Tulis file vim sebagai pengguna super?

10

Ini adalah masalah kegunaan yang sering terjadi pada saya:

Saya membuka file sistem read-only dengan vim, bahkan mengeditnya, karena saya tidak cukup perhatian, atau karena vim pada sistem dikonfigurasi dengan buruk. Setelah perubahan saya selesai, saya terjebak harus menulisnya dalam file sementara atau kehilangan mereka, karena: w! tidak akan bekerja

Apakah ada perintah vim (: W !!!) yang memungkinkan Anda untuk menulis buffer saat ini sebagai pengguna super? (Vim akan meminta sudo atau kata sandi su Anda secara alami)

zimbatme
sumber
1
SO jelas merupakan suatu penipuan, namun kedua pertanyaan SU mengatasi masalah terpisah yang diselesaikan dengan sudoeditperintah. Pertanyaan ini lebih fokus pada lupa untuk mengetiknya di tempat pertama dan mengangkat setelah memulai editor.
heavyd

Jawaban:

15
:w !sudo tee % >/dev/null`

Penjelasan: Dengan !, Anda dapat menjalankan program. Dengan mengawalinya dengan: w, konten file (hal-hal yang Anda miliki di vim, bukan file asli, lebih tepatnya: buffer) akan diberikan ke perintah pada input standar. %diganti dengan nama file, dan >/dev/nullmenghindari konten yang lagi dicetak ke layar (yang merupakan perilaku biasa tee).

Saya telah menemukan cara yang lebih pendek. ddtidak mencetak ke stdout sehingga Anda dapat menyimpan hal nol.

:w !sudo dd of=%

Sama untuk :r, yang menyisipkan output dari perintah yang diberikan, sehingga Anda dapat misalnya memasukkan tanggal saat ini ke file Anda dengan menggunakan:r !date

Marian
sumber
Terima kasih banyak, Anda membuat hidup saya jauh lebih baik! (Brian juga)
zimbatm
Saya baru saja menambahkan metode kedua.
Marian
Itu sangat rapi!
Anthony Giorgio
tidak bekerja dengan undofiles
Christian Brabandt
5

Mencoba:

:w !sudo tee % >/dev/null
Brian
sumber