Mulai Vim sebagai pengguna saya dengan hak akses root

10

Saya memiliki file Vim khusus saya ~/.vimdan pengaturan di ~/.vimrc. Namun, kadang-kadang saya harus mengedit beberapa file /etcdan sebagainya.
Jika saya memulai Vim seperti ini:

$ sudo vim /etc/rc.conf

Saya kehilangan konfigurasi saya karena Vim menggunakan yang standar. Jadi: bagaimana saya bisa menjalankan Vim dengan hak akses root untuk mengedit file tanpa kehilangan pengaturan pengguna saya (yang ada di direktori home saya)?
Saya telah mencoba:

$ su username -c "vim /usr/lib/python2.7/setuptools/dist.py"

tapi Bash memberiku Permission denied. Namun, perintah di atas bekerja misalnya untuk: /etc/acpi/handler.sh. Mengapa demikian?

Catatan: nama pengguna bukan root.

rubik
sumber

Jawaban:

15

Alih-alih sudo vim /etc/rc.confmenggunakan sudoedit /etc/rc.confatau sudo -e /etc/rc.conf. Anda mungkin perlu mengatur variabel lingkungan EDITOR ke vim. Ini akan menjalankan vim itu sendiri sebagai pengguna normal, menggunakan konfigurasi normal Anda, pada salinan file yang akan disalin kembali ketika Anda keluar.

Random832
sumber
Solusi bagus! Saya akan memeriksanya juga.
rubik
Saya mencoba sudoedit /etc/rc.confdan sudo -e /etc/rc.confdan itu membuka vim, tetapi ~ / .vimrc saya tidak dimuat. Apa yang saya lakukan salah?
apparat
@apparat Coba export EDITOR=vimdulu - mungkin mencoba untuk menjalankan vi, yang saya tidak tahu apakah itu memuat vimrc bahkan ketika itu vim.
Random832
Yah, saya pikir ini adalah jawaban terbaik. Terima kasih semuanya.
rubik
@ Random832 export EDITOR=vimbekerja. Saya pikir vi tidak diinstal pada sistem saya dan hanya symlink ke vim. Terima kasih
apparat
6

Anda dapat menggunakan -uvim untuk memberitahu file rc mana yang akan dimuat. misalnya

sudo vim -u ~user/.vimrc /etc/rc.conf

jika mengetik itu setiap kali Anda perlu melakukannya membosankan, buatlah alias:

alias sudovim='sudo vim -u ~user/.vimrc'

Catatan yang vim -udapat menyebabkan plugin atau disebut file rc gagal jika mereka memuat file lain relatif ke $ HOME - $ HOME sekarang direktori home root, bukan pengguna. Ini dapat diselesaikan dengan mis symlinks di home dir root atau dengan hard-coding path absolut.

cas
sumber
Bagus, terima kasih. Aku memecahkan seperti ini: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
rubik
1

sudo vim -S /home/user/.vimrc /etc/rc.conf

Ini setara dengan:

sudo vim /etc/rc.conf + :source /home/user/.vimrc

dan bisa juga alias:

alias svim='sudo vim -S /home/user/.vimrc'

Amos Baker
sumber