Vim内でルートになる

Vim内でルートになる

時にはVimの使用中に設定ファイルの編集を開始しますが/etcsudo避けられない結果は、編集が完了した後にファイルを保存する権限がないという恐ろしい通知を受け取ることです。

ほとんどの場合、編集内容が小さすぎてVimを終了し、rootですべての操作をやり直します。もちろん、書き込み可能な場所に保存してルートにコピーすることもできますが、これもやや面倒です。

sudoしかし、rootになったり、変更を捨てることなく、Vim内で使用できるより簡単な方法があると確信しています。メソッドがsudoユーザー設定に依存しない方が良いでしょう。

答え1

sudoは既存のプロセスの有効なユーザーを変更することはできず、常に高い権限で新しいプロセスを作成し、元のシェルは影響を受けません。これがUNIXデザインの基礎です。私は通常、回避策としてファイルを/ tmpに保存します。本当に直接保存したい場合は、別のプロセスにファイルを転送するVim機能を試してください。次のコマンドを使用して保存してみてください。

:w !sudo dd of=%

テストを経て動作します。その後、Vimはファイルを再ロードするように求めます。しかし、これは不要です。oリロードして元に戻す履歴を失わないようにするには、ボタンを押すだけです。 Vimコマンド/関数に保存したり、アクセスしやすくするためにキーにバインドすることもできますが、読者のための練習用として残しておきます。

答え2

ファイルをルートとして保存します。

:w !sudo tee %

答え3

sudoeditルートとしてファイルを編集するために呼び出されます。

vim潜在的に危険なことをするのがとても怠惰であるという警告で直接電話をかける不快感に直面してください。

答え4

これはまたうまくいきます:

:w !sudo sh -c "cat > %"

これは@Nathan Longのコメントからインスピレーションを得ました。回答

気づく:

"シェルに渡す前に拡張'したいので、代わりに使用する必要があります。%

関連情報