root権限を持つユーザーとしてVimを起動します


10

にカスタムVimファイル~/.vimと設定があります~/.vimrc。しかし、時々私はいくつかのファイル/etcなどを編集しなければなりません。
次のようにVimを起動すると、

$ sudo vim /etc/rc.conf

Vimはデフォルトの設定を使用しているため、設定が失われます。それで、どうすればroot権限でVimを実行して、ユーザーの設定(ホームディレクトリにある)を失うことなくファイルを編集できますか?
私が試してみました:

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

しかし、バッシュは私にくれPermission deniedます。ただし、上記のコマンドは、たとえば次の場合に機能します/etc/acpi/handler.sh。何故ですか?

注:ユーザー名はrootではありません。

回答:


15

代わりのsudo vim /etc/rc.conf使用sudoedit /etc/rc.confまたはsudo -e /etc/rc.conf。EDITOR環境変数をvimに設定する必要がある場合があります。これにより、通常の設定を使用して、終了時にコピーされるファイルのコピーに対して、通常のユーザーとしてvim自体が実行されます。


素敵な解決策!これもチェックします。
ルービック2012

私が試したsudoedit /etc/rc.confsudo -e /etc/rc.conf、それはVimを開きますが、私の〜/ .vimrcとはロードされません。私は何を間違っていますか?
12

@apparat export EDITOR=vim最初に試してください-実行しようとしている可能性があります。vimでviあってもvimrcをロードするかどうかはわかりません。
Random832

さて、これが最良の答えだと思います。あなたがた両方に感謝します。
ルービック

@ Random832 export EDITOR=vimは働いた。viがシステムにインストールされておらず、vimへのシンボリックリンクにすぎないと思いました。おかげで
装置

6

-uロードするrcファイルをvimに指示するために使用できます。例えば

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

入力する必要があるたびに入力するのが面倒な場合は、エイリアスを作成します。

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

vim -u$ HOMEに関連する他のファイルをロードすると、プラグインまたは呼び出されたrcファイルが失敗する可能性があることに注意してください。$ HOMEは、ユーザーのホームディレクトリではなく、ルートのホームディレクトリになります。これは、ルートのホームディレクトリのシンボリックリンクを使用するか、絶対パスをハードコーディングすることで解決できます。


それは素晴らしいです、ありがとう。私はこのように解決しました:alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc"
ルービック2012

1

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

これは次と同等です。

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

エイリアスも可能です:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.