Ayarlar ve eklentiler root olduğunda (`sudo vim`)?


15

Bir dosyayı kök ve kullanım olarak düzenlemem gerektiğinde gerçekten sinir bozucu sudo vim somefile.confve tuş bağlamaları, ayarlarım ve eklentilerimi kullanamıyorum.

Kök olarak düzenlemem gerektiğinde tüm özelleştirmelerimi almanın bir yolu var mı?

Eklentilerim için vim-plug kullanıyorum.


5
Bir yan notta: (ortam değişkenini ayarlamanız şartıyla) sudo vim fileolarak daha iyi yazılır . sudo -e fileEDITOR=vim
lcd047

@ lcd047: Bu yorumu bir cevap haline
getirmelisiniz

Yanıtlar:


15

Vimi kök olarak açmak yerine, tee'ye yönlendirerek kök olarak kaydedebilirsiniz. İşte bir örnek:

:w !sudo tee % > /dev/null

Bu .vimrc takma ad için yararlı olabilir, ben kullanıyorum :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null

4
Bu yararlıdır I did a bunch of editing and then realized I should have used sudoedit, ancak genel durum için sudo -e/ kullanmanızı öneririm sudoedit.
jamessan

7

İki şey:

  1. İle $ sudo -e filedüzenlemek fileiçin kullanın $EDITOR. Ekle export EDITOR=/path/to/vimeğer $EDITORzaten ayarlı değil.

  2. Vanilyaya gitmek, eklenti bağımlılığınızla savaşmanın mükemmel bir yoludur.


Eklenti bağımlılığı kurtarma önermek için -1 (J / K, gerçekten downvote yok)
Robbie Wxyz

3
Bunun vim'i root olarak çalıştırmadığını unutmayın sudo vim. Düzenleme normal kullanıcı olarak gerçekleşir ve sudo orijinal dosyayı güncellemeyi işler.
jamessan

Not: iki benzer seçenek vardır sudo: -Eve -e. -E"koruma ortamı" anlamına gelir ve bu istediğiniz ortam değildir. -e, sırayla, "bir komutu çalıştırma, ancak bir dosyayı tanımlı bir yordamla düzenleme" anlamına gelir.
iksemyonov

3

Görünüşe göre yapmanız gereken tek şey symlink root'un ~/.vimrcve sizinki ~/.vim/.

Sadece root olarak çalıştırın:

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

Ve bunu yapmalı!

(PS Şu an bunu anladım ve diğer noobs ile paylaşmak istedim. Lütfen daha iyi bir yol varsa bana bildirin.)


1
Bu genellikle bazı vim ile ilgili dosyaların ana dizininizde kök olarak yazılması ve daha sonra kendi vim yapılandırmanızı kendi kullanıcınız olarak çalıştırmaya çalışırken hatalarla karşılaşmanızda sorunlara neden olabilir.
Caleb

0

Önceden bir dosyayı kök olarak düzenlemeniz gerektiğini biliyorsanız, komutları kullanarak sudoedit <file>veya sudo -e <file>her zamanki editör tercihlerinizle bunu yapmak için özel bir ortamda kurulum yapmanızı sağlar. Dosyanın bir kopyası oluşturulur ve (kullanıcı olarak) düzenlemek için düzenleyiciniz başlatılır. Dosyadan çıktığınızda kök olarak orijinal konumuna geri kopyalanır.

Bu en güvenli ve önerilen yoldur, ancak a) önceden fark etmemeniz durumunda kök olarak yazmanız veya b) artımlı değişiklikleri yerinde düzenlemek ve kaydetmek istiyorsanız, başka bir şeye ihtiyacınız olacaktır. Bu amaçla, sudo tee smpl tarafından önerilen çözüm kesinlikle doğru yoldadır, ancak uç vakaları ele almak için yapılabilecek bazı küçük iyileştirmeler vardır. Özellikle GUI ve konsol arabirimlerinde sudo parola isteminin işlenmesindeki fark dikkat çekmeye değer.

Bunu ayarlamanın daha kolay bir yolu vim-eunuch eklentisini kullanmaktır. Bu özel sorunu ve kullanışlı bir paket haline getirilmiş birkaç kullanışlı şey var. Kullanımı aramak kadar basit :SudoWrite. Hatta biraz daha kullanışlı bir erişim eşlemesi bile kullanıyorum:

cmap w!! call SudoWrite()

Bu, herhangi bir dosyayı kök kullanarak yazma yeteneğini almalıdır :w!!.


-1

Başka bir seçenek de sudo -E vim somefile.conf, ortamınızı koruyacak şekilde düzenlemeye çalışmaktır, bu nedenle .vimrcve eklentileriniz kullanılır.


Hey, iyi numara! Bu Vi ve diğer birçok komut için faydalıdır.
Robbie Wxyz

3
Bu, yapılandırmanızı kökün ana dizinine bağlayan aynı yan etkilere sahiptir: yani, durum verileri yazan tüm vim işlemleri veya eklentiler bunu ana dizininizde yapar. Bu dosyalar root'a aittir ve normal kullanıcınız kullanmaya devam edemeyeceği için hatalara neden olur.
Caleb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.