root権限でファイルを保存するVimプラグイン。

root権限、もしくは他のユーザー権限で開かなかくてならないファイルを、sudo vimせずにvimで開き、編集して保存しようとしたときに、保存できずに困った経験は無いだろうか。そんなときもこのプラグインがあれば大丈夫。

:w sudo:%

と打てば、root権限で保存することができる。

また、sudo vimで起動すると、自分の設定ファイルが読み込まれず、使い勝手が悪いが、このプラグインを使えば解消できる。

sudo -E vimで起動すれば、自分の設定ファイルを引き継げるが、neocomplcache.vimを使っていると、以下のようなエラー

/usr/home/tmiwa/.vim/plugin/neocomplcache.vim の処理中にエラーが検出されました:
行   35:
"sudo vim" is detected. Please use sudo.vim or other plugins instead.

が出るのでだめ。たぶん、neocomplecacheで生成されるファイルの権限か、何かで問題が起こるのだろう。

インストール

sudo.vim – Allows one to edit a file with prevledges from an unprivledged session. : vim onlineからスクリプトをダウンロードして、~/.vim/plugin以下に置く。

使い方

コマンドラインから開くには

$ vim sudo:<file>

Vim上で開くには

:e sudo:<file>

今開いているファイルを開きなおすには

:e sudo:%

この場合、sudoで開いてない元のファイルが残るので、それは:bd#などで消す。

開いているファイルをroot権限で保存するには

:w sudo:<file>

この方法で保存すると

W11: 警告: ファイル "<file>" は編集開始後に変更されました
詳細は ":help W11" を参照してください
[O]K, ファイル読込((L)):

というメッセージが出るが、Enterを押せばOK。

自分は.vimrcに

nnoremap :es :e sudo:%<CR><C-^>:bd!<CR>
nnoremap :ws :w sudo:%<CR>

という設定を書いている。

上の設定は現在開いているファイルをsudo.vimで開いて、元のバッファを消す設定。

下の設定は現在開いているファイルをsudo.vimで保存する設定。

sudo.vimを使わなくても

sudo.vimを使わなくても

:w !sudo tee %

とすれば、現在開いているファイルを保存することはできる。

参照

関連