Pengaturan dan plugin saat me-root (`sudo vim`)?

15

Ini benar-benar membuat frustasi ketika saya perlu mengedit file sebagai root dan gunakan sudo vim somefile.confdan saya tidak dapat menggunakan keybindings dan pengaturan dan plugin saya.

Apakah ada cara untuk mendapatkan semua penyesuaian saya ketika saya perlu mengedit sebagai root?

Saya menggunakan vim-plug untuk plugins saya.

Robbie Wxyz
sumber
5
Di samping catatan: sudo vim filelebih baik ditulis sebagai sudo -e file(asalkan Anda mengatur variabel lingkungan EDITOR=vim).
lcd047
@ lcd047: Anda harus membuat komentar itu menjadi jawaban
static_rtti

Jawaban:

15

Daripada membuka vim sebagai root, Anda bisa menyimpan sebagai root dengan mengarahkan ke tee. Berikut ini sebuah contoh:

:w !sudo tee % > /dev/null

Ini mungkin berguna untuk alias di .vimrc Anda, saya menggunakan :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null
pengguna530873
sumber
4
Ini berguna untuk I did a bunch of editing and then realized I should have used sudoedit, tetapi untuk kasus umum saya sarankan menggunakan sudo -e/ sudoedit.
jamessan
7

Dua hal:

  1. Gunakan $ sudo -e fileuntuk mengedit filedengan $EDITOR. Tambah export EDITOR=/path/to/vimjika $EDITORbelum diatur.

  2. Going vanilla adalah cara terbaik untuk melawan kecanduan plugin Anda.

romainl
sumber
-1 untuk menyarankan pemulihan kecanduan plugin (J / K, tidak benar-benar downvote)
Robbie Wxyz
3
Perhatikan bahwa ini tidak menjalankan vim sebagai root, seperti sudo vimhalnya vim . Pengeditan terjadi sebagai pengguna normal Anda dan kemudian sudo menangani memperbarui file asli.
jamessan
Catatan: ada dua opsi serupa untuk sudo: -Edan -e. -Eberarti "lingkungan pemelihara", dan ini bukan yang Anda inginkan. -e, pada gilirannya, berarti "jangan menjalankan perintah, tetapi edit file dengan prosedur yang ditentukan".
iksemyonov
3

Sepertinya yang harus Anda lakukan adalah symlink root ~/.vimrcdan ~/.vim/milik Anda.

Jalankan saja sebagai root:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

Dan itu harus dilakukan!

(PS Saya baru saja mengetahui hal ini dan ingin berbagi dengan noobs lain. Tolong beri tahu saya jika ada cara yang lebih baik.)

Robbie Wxyz
sumber
1
Ini sering dapat menyebabkan masalah karena beberapa file yang terkait vim akan ditulis sebagai root di direktori home Anda dan kemudian Anda akan menemukan kesalahan ketika mencoba menjalankan konfigurasi vim Anda sendiri sebagai pengguna Anda sendiri.
Caleb
0

Jika Anda tahu sebelumnya bahwa Anda perlu mengedit file sebagai root, menggunakan perintah sudoedit <file>atau sudo -e <file>akan membuat Anda mengatur dalam lingkungan khusus untuk melakukannya dengan preferensi editor yang biasa Anda lakukan. Salinan file dibuat dan editor Anda diluncurkan untuk mengeditnya (sebagai pengguna Anda). Ketika Anda keluar file disalin kembali ke lokasi aslinya sebagai root.

Itu adalah cara yang paling aman dan direkomendasikan, tetapi jika a) Anda tidak menyadari sebelumnya, Anda perlu menulis sebagai root atau b) ingin mengedit dan menyimpan perubahan tambahan di tempat, Anda akan membutuhkan sesuatu yang lain. Untuk tujuan ini solusi menggunakan yang sudo tee diusulkan oleh smpl sudah pasti di jalur yang benar, tetapi ada beberapa perbaikan kecil yang dapat dilakukan untuk menangani kasus tepi. Khususnya perbedaan dalam menangani prompt kata sandi sudo dalam antarmuka GUI vs konsol patut mendapat perhatian.

Cara yang lebih mudah untuk mengatur ini adalah dengan menggunakan plugin vim-kasim . Ini memiliki masalah khusus ini dan beberapa hal berguna lainnya digulung menjadi paket praktis. Penggunaannya sesederhana menelepon :SudoWrite. Saya bahkan menggunakan pemetaan akses yang sedikit lebih sederhana:

cmap w!! call SudoWrite()

Itu seharusnya memberi Anda kemampuan untuk menulis file apa pun sebagai root menggunakan :w!!.

Caleb
sumber
-1

Opsi lain adalah menjalankan sudo -E vim somefile.confuntuk mengedit, yang akan melestarikan lingkungan Anda, maka Anda .vimrcdan plugin akan digunakan.

RSabet
sumber
Hei, trik yang bagus! Itu cara yang berguna untuk Vi dan banyak perintah lainnya.
Robbie Wxyz
3
Ini memiliki efek samping yang sama yang menghubungkan konfigurasi Anda ke direktori home root: yaitu bahwa setiap operasi vim atau plugin yang menulis data keadaan akan melakukannya di direktori home Anda. File-file ini akhirnya dimiliki oleh root dan nantinya akan menyebabkan kesalahan karena pengguna normal Anda tidak akan dapat terus menggunakannya.
Caleb